Coresignal alternative for company data
Company data by domain with no subscription. Prepaid credits that never expire, a fixed price per lookup, and a refund when a call fails.
What you pay#
| Coresignal | HappyFetch, by website domain | |
|---|---|---|
| Lowest price per 1,000 | $4.50Elite, yearly | $1.00Business pack, $500 |
| Cheapest plan, per 1,000 | $196.00Mini, $49 a month | $2.00Starter pack, $10 |
| How you pay | Subscription, from $49 a month | Prepaid packs, from $10 |
| Unused credits | Yearly plans: valid 12 months | Never expire |
| Bills a failed call? | No | No, refunded in the same request |
Elite yearly: $54,000 for 120M credits. Mini: 2,500 credits. A basic company record is 10 credits, the full record 20. Coresignal's prices come from its public pricing page, checked on October 12, 2026. Sources: Coresignal pricing, Credit costs, Company data bundles.
Coresignal sells subscriptions, monthly or yearly, from $49 a month, and its lowest price per company comes with its largest plan, paid yearly. With us, you buy a pack when you need one, from $10, and the credits stay in your workspace until you use them. Domain lookups cost 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.
How the calls compare#
Coresignal GET api.coresignal.com/cdapi/v2/company_multi_source/enrich?website=stripe.com
HappyFetch POST https://api.happyfetch.net/v1/domain {"domain": "stripe.com"}| Coresignal | HappyFetch | |
|---|---|---|
| Your key goes in | The apikey header |
The Authorization: Bearer header |
| Company fields | At the top level | Under data, with cost and freshness under meta |
| Founding year | A string | A number |
| Size band | 501-1000 employees |
start and end as numbers |
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"])Field map#
| Coresignal | HappyFetch |
|---|---|
company_name |
data.name |
description |
data.description |
tagline |
data.tagline |
industry |
data.industry |
website |
data.websiteUrl |
website_domain |
meta.resolved.domain |
employees_count |
data.employeeCount |
size_range |
data.employeeCountRange, with start and end as numbers |
founded_year |
data.foundedOn.year, as a number |
hq_street |
data.headquarter.street1 |
hq_city |
data.headquarter.city |
hq_state |
data.headquarter.geographicArea |
hq_zipcode |
data.headquarter.postalCode |
hq_country_iso2 |
data.headquarter.country |
company_phone_numbers |
data.phone, one number |
categories_and_keywords |
data.specialities |
company_locations_full |
data.locations |
Every answer also carries the company's numeric id: one stable key per company, even when it renames.
A drop-in function#
import os
import requests
API = "https://api.happyfetch.net"
def company_by_domain(domain: str) -> dict | None:
res = requests.post(
f"{API}/v1/domain",
headers={"Authorization": f"Bearer {os.environ['HAPPYFETCH_API_KEY']}"},
json={"domain": domain},
timeout=120,
)
if res.status_code == 404:
return None # no company at this domain
res.raise_for_status()
return res.json()["data"]When Coresignal is the better choice#
Choose Coresignal when you need employee or job-posting data next to your company records, or whole datasets delivered in bulk. HappyFetch is for current company profiles, one call at a time, priced per answer.
Try it on your own companies
200 credits free when you verify your email. No card needed, no subscription.