People Data Labs alternative for company data
Company data by domain without a monthly subscription. Prepaid credits that never expire, and a call we can't complete is refunded in the same request.
What you pay#
| People Data Labs | HappyFetch, by website domain | |
|---|---|---|
| Lowest price per 1,000 | $80.00Pro, yearly | $1.00Business pack, $500 |
| Cheapest plan, per 1,000 | $100.00Pro, monthly | $2.00Starter pack, $10 |
| How you pay | Subscription, from $100 a month | Prepaid packs, from $10 |
| Unused credits | — | Never expire |
| Bills a failed call? | No | No, refunded in the same request |
Pro yearly: $960 for 12,000 records. Pro monthly: $100 for 1,000. 1 credit per matched company. People Data Labs' prices come from its public pricing page, checked on October 12, 2026. Sources: People Data Labs pricing, Self-serve plans and credits, Company Enrichment API.
People Data Labs sells company enrichment as a subscription, from $100 a month, and its lowest price per company comes with a yearly plan. 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#
People Data Labs GET api.peopledatalabs.com/v5/company/enrich?website=stripe.com
HappyFetch POST https://api.happyfetch.net/v1/domain {"domain": "stripe.com"}| People Data Labs | HappyFetch | |
|---|---|---|
| Your key goes in | The X-Api-Key header |
The Authorization: Bearer header |
| Company fields | At the top level | Under data, with cost and freshness under meta |
| Country | united states |
US |
| Failed calls charged | No | No, refunded in the same request |
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#
| People Data Labs | HappyFetch |
|---|---|
display_name |
data.name |
summary |
data.description |
headline |
data.tagline |
industry |
data.industry |
website |
data.websiteUrl |
employee_count |
data.employeeCount |
size |
data.employeeCountRange, with start and end as numbers |
founded |
data.foundedOn.year |
location.street_address |
data.headquarter.street1 |
location.address_line_2 |
data.headquarter.street2 |
location.locality |
data.headquarter.city |
location.region |
data.headquarter.geographicArea |
location.postal_code |
data.headquarter.postalCode |
location.country |
data.headquarter.country, as a two-letter code |
locations |
data.locations |
tags |
data.specialities |
linkedin_url |
data.linkedInUrl |
linkedin_id |
data.linkedInId |
linkedin_slug |
data.universalName |
linkedin_follower_count |
data.followerCount |
Every answer also carries the company's numeric id: one stable key per company, whichever website or address you started from, even when the company 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 People Data Labs is the better choice#
Choose People Data Labs when you need person records with contact details, company fields we don't return, such as revenue estimates or industry codes, or whole datasets delivered in bulk. HappyFetch is for 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.