Clearbit alternative: company data by domain
New Clearbit sign-ups need a HubSpot account. Get company data by domain into your own code instead: one call, prepaid, with no CRM plan to buy.
What changed at Clearbit#
HubSpot bought Clearbit at the end of 2023, and new Clearbit sign-ups have needed a HubSpot account since December 2023. Its enrichment is now Breeze Intelligence, which works inside HubSpot. The free Clearbit tools switched off on April 30, 2025. If you need company data in your own code, without a CRM, this page shows the shortest way back.
Company data by domain, in one call#
curl https://api.happyfetch.net/v1/domain --max-time 120 \
-H "Authorization: Bearer $HAPPYFETCH_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"domain":"stripe.com"}'const res = await fetch("https://api.happyfetch.net/v1/domain", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HAPPYFETCH_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(), // send the same key when you retry this call
},
body: JSON.stringify({
"domain": "stripe.com"
}),
signal: AbortSignal.timeout(120_000),
});
const { data, meta, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);
console.log(meta.request_id, meta.cache.status, data);import os, uuid, requests
res = requests.post(
"https://api.happyfetch.net/v1/domain",
headers={
"Authorization": f"Bearer {os.environ['HAPPYFETCH_API_KEY']}",
"Idempotency-Key": str(uuid.uuid4()), # send the same key when you retry this call
},
json={
"domain": "stripe.com"
},
timeout=120,
)
body = res.json()
if not res.ok:
raise RuntimeError(f"{body['error']['code']}: {body['error']['message']}")
print(body["meta"]["request_id"], body["meta"]["cache"]["status"])The complete response for stripe.com:
{
"data": {
"name": "Stripe",
"tagline": "Help increase the GDP of the internet.",
"description": "Stripe builds programmable financial services. Millions of companies—from the world’s largest enterprises to the most ambitious startups—use Stripe to accept payments, grow their revenue, and accelerate new business opportunities. Headquartered in San Francisco and Dublin, the company aims to increase the GDP of the internet.",
"industry": "Technology, Information and Internet",
"websiteUrl": "https://stripe.com",
"phone": null,
"logo": "https://media.licdn.com/dms/image/v2/D560BAQE2ZfJyfn-VCg/company-logo_200_200/B56ZlyKwpUKIAI-/0/1758557047806/stripe_logo?e=2147483647&v=beta&t=En4Hm6NDGbDTYCoOQ0Ko5Ne2gylx0WRb0yL2GlOeXBQ",
"backgroundUrl": "https://media.licdn.com/dms/image/v2/D563DAQFt98MykXcktg/image-scale_191_1128/B56Z352EMMKIAY-/0/1778013193531/stripe_cover?e=2147483647&v=beta&t=UwiZWbPrYkD77DpQmZIjVuuqKMCfyZ-e-YcHE336MlY",
"followerCount": 1721407,
"employeeCount": 16594,
"employeeCountRange": {
"start": 5001,
"end": 10000
},
"foundedOn": {
"year": 2010
},
"headquarter": {
"city": "South San Francisco",
"country": "US",
"geographicArea": "California",
"postalCode": "94080",
"street1": "354 Oyster Point Blvd",
"street2": null
},
"locations": [
{
"city": "South San Francisco",
"country": "US",
"postalCode": "94080",
"state": "California",
"street1": "354 Oyster Point Blvd",
"street2": null
}
],
"specialities": [],
"universalName": "stripe",
"linkedInUrl": "https://www.linkedin.com/company/stripe",
"linkedInId": "2135371"
},
"meta": {
"request_id": "c41d7e02-5b8a-4f3c-9e61-7a2d0b95f4e8",
"endpoint": "domain",
"credits_charged": 4,
"credits_remaining": 196,
"cache": {
"status": "miss",
"age_seconds": 0,
"fetched_at": "2026-09-22T17:40:00.000Z",
"max_age_seconds": 604800
},
"content_hash": "sha256:5da96e23d8f77cc3b21e33ef47ed3f0086328e61fdf427f2941e351f56af9554",
"canonical": {
"slug": "stripe",
"id": "2135371"
},
"resolved": {
"domain": "stripe.com",
"verified": true
}
}
}Every one of the 18 fields is always present, the company's LinkedIn page among them, and null when a
value isn't known. Any URL on the site works as input: https://www.stripe.com/pricing is looked up as
stripe.com.
What you pay#
| HubSpot Breeze Intelligence (formerly Clearbit) | HappyFetch, by website domain | |
|---|---|---|
| Lowest price per 1,000 | Not published | $1.00Business pack, $500 |
| Cheapest plan, per 1,000 | Not published | $2.00Starter pack, $10 |
| How you pay | Inside HubSpot plans | Prepaid packs, from $10 |
| Unused credits | — | Never expire |
| Bills a failed call? | — | No, refunded in the same request |
Clearbit's successor. Uses no HubSpot credits. HubSpot Breeze Intelligence (formerly Clearbit) doesn't publish a per-lookup price (checked on October 12, 2026. Sources: HubSpot Breeze Intelligence (formerly Clearbit) pricing, Data enrichment in HubSpot, Clearbit changelog).
Breeze Intelligence comes with paid HubSpot plans and works inside HubSpot. With us, a domain lookup costs from $1.00 per 1,000 on our biggest pack, and half that for companies already in our cache. If you have the company's LinkedIn URL, it's $0.50 per 1,000. Credits are prepaid, they stay in your workspace until you use them, and a call we can't complete is refunded in the same request.
How the calls compare#
Clearbit GET company.clearbit.com/v2/companies/find?domain=stripe.com
HappyFetch POST https://api.happyfetch.net/v1/domain {"domain": "stripe.com"}| Clearbit | HappyFetch | |
|---|---|---|
| Your key goes in | Basic auth, or a Bearer token | The Authorization: Bearer header |
| A company they hadn't looked up before | 202: ask again later | Answered in the same call |
| No company at the domain | 404 | 404 not_found, with a reason |
| An invalid domain | 422 | 400 invalid_domain, never charged |
Field map#
| Clearbit | HappyFetch |
|---|---|
name |
data.name |
description |
data.description |
category.industry |
data.industry |
domain |
meta.resolved.domain |
metrics.employees |
data.employeeCount |
metrics.employeesRange |
data.employeeCountRange, with start and end as numbers |
foundedYear |
data.foundedOn.year |
geo.streetAddress |
data.headquarter.street1 |
geo.city |
data.headquarter.city |
geo.state |
data.headquarter.geographicArea |
geo.postalCode |
data.headquarter.postalCode |
geo.countryCode |
data.headquarter.country, the same two-letter code |
phone |
data.phone |
tags |
data.specialities |
linkedin.handle |
data.linkedInUrl, as the full URL |
We also return the full website and every office. Every answer carries the company's numeric id: one stable key per company, even when it renames.
A drop-in function#
const API = "https://api.happyfetch.net";
export async function companyByDomain(domain) {
const res = await fetch(`${API}/v1/domain`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HAPPYFETCH_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ domain }),
});
if (res.status === 404) return null; // no company at this domain
const body = await res.json();
if (!res.ok) throw new Error(`HappyFetch ${res.status}: ${body.error.code}`);
return body.data;
}When Breeze Intelligence is the better choice#
If your team already works in HubSpot and wants enrichment inside the CRM without writing code, Breeze Intelligence is built for exactly that. HappyFetch is for the other case: company data in your own code, priced per call.
Try it on your own companies
200 credits free when you verify your email. No card needed, no subscription.