Free
$0/mo
200
Requests / month
- Overage
- Hard limit
- Rate limit
- 10/min
- Card
- Not needed
Public emails, phones, socials, and addresses from a company domain.
Data samples
The page the Website Contacts API reads, and the response it returns for the same query.
domain
stripe.com
https://stripe.com/

{
"domain": "stripe.com",
"url": "https://stripe.com/",
"pages": [
{
"url": "https://stripe.com/",
"type": "home"
},
{
"url": "https://stripe.com/about",
"type": "about"
},
{
"url": "https://stripe.com/privacy",
"type": "privacy"
}
],
"company": {
"name": "Stripe",
"legal_name": "Stripe, LLC",
"description": "Stripe powers online and in-person payment processing and financial solutions for businesses of all sizes.",
"logo": "https://images.stripeassets.com/fzn2n1nzq965/1hgcBNd12BfT9VLgbId7By/01d91920114b124fb4cf6d448f9f06eb/favicon.svg",
"country": "US",
"language": "en-US"
},
"emails": [
{
"value": "privacy@stripe.com",
"type": "generic",
"domain_match": true,
"sources": [
"https://stripe.com/privacy"
]
}
],
"phones": [
{
"e164": "+18889262289",
"raw": "+1 888 926 2289",
"type": "phone",
"country": "US",
"sources": [
"https://stripe.com/"
]
}
],
"social": [
{
"network": "linkedin",
"handle": "stripe",
"url": "https://www.linkedin.com/company/stripe",
"sources": [
"https://stripe.com/"
]
}
],
"addresses": [
{
"street": "920 5th Avenue, Suite 1900",
"locality": "Seattle",
"region": "WA",
"postal_code": "98104",
"country": "US",
"sources": [
"https://stripe.com/"
]
}
],
"people": [
{
"name": "Patrick Collison",
"job_title": null,
"email": null,
"phone": null,
"sources": [
"https://stripe.com/"
]
}
]
}Source page captured separately from the recorded response, so live values can differ.
Code
One host, one Bearer key for every Clair API. Each call returns JSON with the same envelope, so a second API is a new path, not a new client.
curl -G "https://api.clair.im/v1/contacts?domain=stripe.com" \ -H "Authorization: Bearer YOUR_API_KEY"
Reference
Public pages only. Default five pages (home plus four linked). Extra pages never use a paid scrape.
GET /v1/contacts
Authorizationheader · stringrequired
domainstringrequired
pagesinteger
match_email_domainstring
Pricing
This API is its own subscription with its own quota. Unused requests expire at renewal. Need a custom volume? Email contact@serinlabs.com.
$0/mo
200
Requests / month
$49.99/mo
3,700
Requests / month
Most popular
$149/mo
14,800
Requests / month
$399/mo
49,600
Requests / month
No monthly fee
$0.0201
Per request
Prices in USD, billed monthly by Stripe. Cancel any time from Manage billing.
Live scrape of a company’s public website. The homepage may use one paid fetch; extra same-origin pages (contact, about, imprint, team, support, privacy) are free fetches from homepage links. Returns emails, phones, social profiles, JSON-LD addresses, company metadata, and named people. It does not log in, walk a sitemap, or buy a lead database.
Each call is one request, and each extra page is a new call. A malformed request (400) is not counted, and a request that fails on our side (5xx) is refunded.
Yes. Every Clair API has its own free tier: 200 requests a month, with no card. It resets monthly, and the API stops when the month's requests run out.
On a paid tier, extra calls are billed at the tier's overage rate until its ceiling, then the API returns 429 until the next period. The free tier returns 429 as soon as its requests are used.
No. Each API is its own subscription, and one key works with all of them. A call to an API the account does not subscribe to returns 403 not_subscribed.
Each Clair API is its own monthly request quota. Unused requests expire. Every API has a free tier to try it.