# 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](https://clearbit.com/changelog) since December
2023. Its enrichment is now Breeze Intelligence, which
[works inside HubSpot](https://knowledge.hubspot.com/records/get-started-with-data-enrichment). The free
Clearbit tools
[switched off on April 30, 2025](https://help.clearbit.com/hc/en-us/articles/31990018203031-Clearbit-Free-Tools-Sunset-April-30th-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

```bash tab="cURL"
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"}'
```

```javascript tab="JavaScript"
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);
```

```python tab="Python"
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:

```json title="200 OK"
{
  "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.00** (Business pack, $500) |
| Cheapest plan, per 1,000 | Not published | $2.00 (Starter 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](https://www.hubspot.com/products/data), [Data enrichment in HubSpot](https://knowledge.hubspot.com/records/get-started-with-data-enrichment), [Clearbit changelog](https://clearbit.com/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

```text
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

```js
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.
