How to Get a Company Name

October 09, 2026
How to Get a Company Name

Your product team needs a clean company name (and basic firmographics) from a signup email or a domain so you can enrich accounts, deduplicate CRMs, and apply correct routing. By the end of this guide, you’ll call a single endpoint to extract the company name from any domain, parse the returned fields you actually need, and ship reliable enrichment with caching, batching, and fallbacks.

Why Klazify is the Best API for Extracting Company Names from Domains

When you’re enriching signups or auditing leads, “what company is behind this domain?” is the first question. Klazify’s models analyze actual site content and signals rather than just WHOIS or metadata, which is essential for resolving ambiguous or content-light domains. This matters for getting correct company names and avoiding misattribution.

Illustration: How to Get a Company Name
  • Accurate website categorization using AI: Full-page analysis helps disambiguate similarly named businesses and clarify corporate entities behind marketing landing pages, improving the precision of returned company names and tags.
  • Global coverage: International domains and localized sites can still yield consistent company name, location, and high-level ranges for headcount or revenue.
  • Real-time classification: Fresh crawls and analysis reduce stale mappings, which is key when a domain redirects to a new brand or is acquired.
  • Industry-level categories (IAB taxonomy): Even if your immediate need is the name, the associated categories can drive routing rules, brand safety, or sales territory logic.
  • Simple API integration: A single REST call with a URL returns company data fields you can plug straight into your pipeline.
  • Compliance and filtering: Combine a trustworthy company name with categorization to gate signups by vertical or risk profile before they hit your database.

Klazify provides these results through endpoints you can script quickly and operate at scale. Get started with a free trial of the Starter plan ($39.99/mo with a 7-day trial), and note that failed or unreachable calls are not billed. Explore more at klazify.com or jump straight to Register.

What You’ll Build: Enrich a Signup with a Company Name

We’ll take a domain collected from a signup form, send it to Klazify, and store the returned company name and firmographic ranges (location, employeesRange, revenue, raised, tags). This is enough for routing, deduping, and segmentation in your CRM or CDP.

Endpoint we’ll use: POST https://www.klazify.com/api/domain_company. You’ll authenticate with a Bearer token and pass JSON containing the target URL or domain.

Endpoint and Request

Send a POST request with a JSON body that includes the website URL you want to resolve. Authentication uses a Bearer token. Below is a ready-to-run curl example:

curl -X POST "https://www.klazify.com/api/domain_company" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://cbsnews.com"}'

Replace YOUR_API_KEY with your Klazify key. The example domain above is included only in this curl for demonstration.

Understanding the Response: Official Sample

The company fields you’ll parse include: name, city, stateCode, countryCode, employeesRange, revenue, raised, and tags. Use the official sample below to understand structure and field names. Do not change field names when integrating.


{
"domain": {
"categories": [
{
"confidence": 0.92,
"name": "/Computers & Electronics/Consumer Electronics",
"IAB-632-596": "Consumer Electronics/Technology & Computing/Consumer Electronics"
},
{
"confidence": 0.89,
"name": "/Internet & Telecom/Mobile & Wireless/Mobile Phones"
}
],
"social_media": null,
"logo_url": "https://klazify.s3.amazonaws.com/2110787991611585019600ed5fb1d1300.04730104.png"
},
"success": true,
"objects": {
"company": {
"url": "https://www.apple.com/",
"name": "Apple",
"city": "Cupertino",
"stateCode": "CA",
"countryCode": "US",
"employeesRange": "100K+",
"revenue": 274515000000,
"raised": null,
"tags": [
"E-commerce",
"Consumer Electronics",
"Mobile",
"B2C"
],
"tech": [
"omniture_adobe_analytics",
"atlassian_confluence",
"successfactors",
"apache_apex",
"talend",
"oracle_peoplesoft",
"salesforce",
"stripe",
"dell_boomi_atomsphere",
"gigya",
"sage_50cloud",
"quickbooks",
"webmethods",
"apache_tomcat",
"alteryx",
"tibco_rendezvous",
"atlassian_jira",
"..."
]
}
},
"domain_registration_data": {
"domain_age_date": "1987-02-19",
"domain_age_days_ago": "13026",
"domain_expiration_date": "2030-02-20",
"domain_expiration_days_left": "123"
},
"similar_domains": [
"bestbuy.com",
"icloud.com",
"microsoft.com",
"macrumors.com",
"google.com",
"samsung.com",
"twitter.com",
"hp.com",
"bhphotovideo.com",
"dell.com"
]
}

Fields you’ll typically use to get the company name and enrich an account record:

  • objects.company.name: Human-readable company name to store in your CRM.
  • objects.company.url: Canonical company URL.
  • objects.company.city, stateCode, countryCode: Basic location to support assignment and region-based routing.
  • objects.company.employeesRange: Company size range in employees for segmentation.
  • objects.company.revenue: Treat as a range-like indicator for mapping to your internal buckets. Do not assume this is an exact, current figure.
  • objects.company.raised: Capital raised if available; can be null.
  • objects.company.tags: Useful tags for vertical or go-to-market motion.
  • domain.categories and domain.logo_url: Optional fields for UI and policy decisions (brand safety, category-based logic).

Minimal Integration: Python Example

Below is a concise Python example that calls the same endpoint as the curl and extracts the company name plus a few enrichment fields you can write into your data store.

import os
import requests

API_KEY = os.getenv("KLAZIFY_API_KEY", "YOUR_API_KEY")
ENDPOINT = "https://www.klazify.com/api/domain_company"

def get_company_info(url):
resp = requests.post(
ENDPOINT,
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={"url": url},
timeout=15
)
resp.raise_for_status()
data = resp.json()

# Defensive parsing - presence varies
company = (data.get("objects") or {}).get("company") or {}
name = company.get("name")
city = company.get("city")
state = company.get("stateCode")
country = company.get("countryCode")
employees = company.get("employeesRange")
revenue = company.get("revenue")
raised = company.get("raised")
tags = company.get("tags") or []

return {
"name": name,
"location": {"city": city, "stateCode": state, "countryCode": country},
"employeesRange": employees,
"revenue": revenue,
"raised": raised,
"tags": tags
}

if __name__ == "__main__":
# Example only; replace with your signup's domain
result = get_company_info("https://cbsnews.com")
print(result)

The Official Sample Response (Reference Copy #2)

Keep a copy of the official sample in your repo or internal docs so teams consistently parse the correct keys. Pasting again below for quick reference:


{
"domain": {
"categories": [
{
"confidence": 0.92,
"name": "/Computers & Electronics/Consumer Electronics",
"IAB-632-596": "Consumer Electronics/Technology & Computing/Consumer Electronics"
},
{
"confidence": 0.89,
"name": "/Internet & Telecom/Mobile & Wireless/Mobile Phones"
}
],
"social_media": null,
"logo_url": "https://klazify.s3.amazonaws.com/2110787991611585019600ed5fb1d1300.04730104.png"
},
"success": true,
"objects": {
"company": {
"url": "https://www.apple.com/",
"name": "Apple",
"city": "Cupertino",
"stateCode": "CA",
"countryCode": "US",
"employeesRange": "100K+",
"revenue": 274515000000,
"raised": null,
"tags": [
"E-commerce",
"Consumer Electronics",
"Mobile",
"B2C"
],
"tech": [
"omniture_adobe_analytics",
"atlassian_confluence",
"successfactors",
"apache_apex",
"talend",
"oracle_peoplesoft",
"salesforce",
"stripe",
"dell_boomi_atomsphere",
"gigya",
"sage_50cloud",
"quickbooks",
"webmethods",
"apache_tomcat",
"alteryx",
"tibco_rendezvous",
"atlassian_jira",
"..."
]
}
},
"domain_registration_data": {
"domain_age_date": "1987-02-19",
"domain_age_days_ago": "13026",
"domain_expiration_date": "2030-02-20",
"domain_expiration_days_left": "123"
},
"similar_domains": [
"bestbuy.com",
"icloud.com",
"microsoft.com",
"macrumors.com",
"google.com",
"samsung.com",
"twitter.com",
"hp.com",
"bhphotovideo.com",
"dell.com"
]
}

How to Use the Returned Fields in Your Pipeline

  • Normalize name: Trim whitespace and preserve casing as returned in objects.company.name.
  • Deduplicate: Use normalized domain + name as a composite key to prevent duplicate accounts.
  • Routing: Map countryCode and stateCode to regions; use employeesRange to prioritize enterprise vs SMB flows.
  • Segmentation: Build audiences using tags and categories; store them as arrays for flexible filters.
  • UI surfacing: Optionally show domain.logo_url in admin tools to help agents validate the mapping at a glance.

Mapping to Your Internal Taxonomy

You may already have internal company size or revenue buckets. Create a mapping layer that reads employeesRange and revenue into your buckets, leaving raw fields intact for auditing. Categories can be mapped to your business units via the IAB-style paths available in the domain.categories array.

Field Source Usage Example Mapping
name objects.company.name CRM Account Name Exact string
employeesRange objects.company.employeesRange Size Group 100K+ → Enterprise
revenue objects.company.revenue Revenue Bucket Map to your revenue bands
countryCode objects.company.countryCode Region Routing US → NAMER
tags objects.company.tags Vertical Segmentation “B2C” → Consumer GTM
categories domain.categories Brand Safety / Allow Lists Match against policies

Batching, Rate Limits, and Caching

Design your integration to avoid re-calling for the same domain repeatedly. Cache results keyed by the registrable domain (e.g., example.co.uk) with a TTL that fits your data freshness needs. For domains that frequently redirect or rebrand, consider a shorter TTL.

  • Batching: Queue domains from signups, ads audits, or logs and process them in periodic jobs to smooth throughput. Keep batch sizes modest to prevent long tail timeouts.
  • Retry policy: Implement idempotent retries for transient network errors. Failed or unreachable calls are not billed, which simplifies retry logic.
  • Backoff: If you detect throttling, back off exponentially and resume.

If a domain is unknown or newly registered, you may not immediately receive all fields. Fallback to a “pending enrichment” state, store the URL, and reprocess later.

Handling Unknown or Partial Results

Not every domain will return every field. Your parser should tolerate null values (e.g., raised can be null) and missing arrays. For new or content-light domains, you might only receive the company name and a subset of location or tags. Persist raw JSON alongside your normalized fields for debugging and data quality checks.

Security, Compliance, and Auditability

Store both the raw JSON payload and the normalized fields you use in production. This enables data quality audits, explainable routing, and quick rollback if your mapping tables change. When building brand safety controls, compare domain.categories to your allow/block lists prior to allowing the account into downstream systems.

The Official Sample Response (Reference Copy #3)

A final copy here so it’s easy to compare while you wire up mappers and tests:


{
"domain": {
"categories": [
{
"confidence": 0.92,
"name": "/Computers & Electronics/Consumer Electronics",
"IAB-632-596": "Consumer Electronics/Technology & Computing/Consumer Electronics"
},
{
"confidence": 0.89,
"name": "/Internet & Telecom/Mobile & Wireless/Mobile Phones"
}
],
"social_media": null,
"logo_url": "https://klazify.s3.amazonaws.com/2110787991611585019600ed5fb1d1300.04730104.png"
},
"success": true,
"objects": {
"company": {
"url": "https://www.apple.com/",
"name": "Apple",
"city": "Cupertino",
"stateCode": "CA",
"countryCode": "US",
"employeesRange": "100K+",
"revenue": 274515000000,
"raised": null,
"tags": [
"E-commerce",
"Consumer Electronics",
"Mobile",
"B2C"
],
"tech": [
"omniture_adobe_analytics",
"atlassian_confluence",
"successfactors",
"apache_apex",
"talend",
"oracle_peoplesoft",
"salesforce",
"stripe",
"dell_boomi_atomsphere",
"gigya",
"sage_50cloud",
"quickbooks",
"webmethods",
"apache_tomcat",
"alteryx",
"tibco_rendezvous",
"atlassian_jira",
"..."
]
}
},
"domain_registration_data": {
"domain_age_date": "1987-02-19",
"domain_age_days_ago": "13026",
"domain_expiration_date": "2030-02-20",
"domain_expiration_days_left": "123"
},
"similar_domains": [
"bestbuy.com",
"icloud.com",
"microsoft.com",
"macrumors.com",
"google.com",
"samsung.com",
"twitter.com",
"hp.com",
"bhphotovideo.com",
"dell.com"
]
}

Operational Tips That Save Time

  • Normalization: Lowercase and punycode domains before requests; store the canonical URL returned in objects.company.url.
  • Revenue and employees: Treat these as ranges/indicators for bucketing; avoid precise numeric computations unless explicitly required in your internal taxonomy.
  • Timestamps: When you store results, add your own retrieved_at timestamp (UTC) to track freshness and trigger re-enrichment.
  • Pipelines: Run enrichment as a sidecar service that your signup, CRM, or ETL pipeline can call asynchronously to avoid user-facing latency.
  • Observability: Log response success flags, HTTP status codes, and retry counts; alert on rising null-name rates.

Extending Beyond the Name: Categories and Brand Safety

Even if your primary goal is the company name, the returned domain.categories and logo_url help with allowlisting, ad placement audits, or routing sensitive workflows. If your platform filters by vertical, map the category paths directly to your existing policy tables. You can also store similar_domains for competitive research or to identify multi-brand groups.

Where to Go Next

For endpoint details, schemas, and integration notes, see the Documentation. To manage keys and monitor your usage, check the MCP. You can also browse capabilities on klazify.com and create a free account via Register to start testing.

FAQ

  • Does the API return an exact revenue?
    Treat revenue as a range-like indicator suitable for bucket mapping. Do not assume it is an exact, current figure.
  • What if no company name is returned?
    Cache a null result with a short TTL, queue the domain for reprocessing, and optionally prompt the user for a manual company name to avoid blocking signups.
  • Can I map categories to my internal taxonomy?
    Yes. Use the provided category names and IAB-style paths as inputs to your mapping table so your policies and routing remain consistent.
  • How should I handle rate limits?
    Use batching, retries with exponential backoff, and caching per registrable domain. Monitor for throttle indicators and spread your workload over time.
  • Are failed calls billed?
    No—failed or unreachable calls are not billed. Implement safe retries to handle transient errors confidently.

Ready to enrich signups and get accurate company names from domains? Create your free account and start integrating today: Register.

Ready to use Klazify?

Start classifying websites, enriching company data, and exploring web intelligence.

Get Started Free