One domain, and the company behind it
The Company Enrichment API resolves a domain to a company as clean JSON.
3 active endpoints, on 6, 14 and 24 credit tiers.
- POST/enrich-company/v1/company_domain
- POST/enrich-company/v1/company_domain_rich
- POST/enrich-company/v1/batch
What Company Intelligence endpoints does ReefAPI ship?
3 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Company Intelligence API
3 of 3 endpoints, ready to run
The assembled profile: name and description, domain age and registration, technology, social and search presence, reviews, recent news, GitHub and package footprint, and open roles by department.
{ "ok": true, "meta": { "api": "enrich-company", "endpoint": "company_domain", "mode": "basic", "latency_ms": 5281.3, "record_count": 7, "cache_hit": false, "completeness_pct": 100 }, "data": { "provenance": { "trends": { "status": "skipped", "missing_reason": "skipped" }, "apps": { "status": "skipped", "missing_reason": "skipped" }, "funding": { "status": "skipped", "missing_reason": "skipped" }, "traffic": { "status": "skipped", "missing_reason": "skipped" }, "domain": { "status": "matched", "engine": "domain-intel", "latency_ms": 3604.7 }, "tech": { "status": "matched", "engine": "domain-intel+homepage-hints", "latency_ms": 3604.7 }, "presence": { "status": "matched", "engine": "google-search+url-resolver" }, "reputation": { "status": "matched", "engine": "trustpilot" }, "news": { "status": "matched", "engine": "news-article" }, "developer": { "status": "matched", "engine": "github(+packages)" }, "hiring": { "status": "matched", "engine": "ats-jobs" } }, "entity": { "input_domain": "stripe.com", "final_domain": "stripe.com", "match": "exact-domain", "confidence": 0.99, "canonical_name": "Stripe", "evidence": [ { "name": "Stripe", "kind": "site-og", "source": "url-resolver", "weight": 0.8 }, { "name": "Stripe", "kind": "trustpilot-domain-match", "source": "trustpilot", "weight": 0.95 }, { "name": "Stripe", "kind": "stem-guess", "source": "derived", "weight": 0.3 } ] }, "domain": { "registered": true, "registrar": "SafeNames Ltd.", "created": "1995-09-12T04:00:00Z", "expires": "2027-09-11T04:00:00Z", "age_days": 11309, "nameservers": [ "NS-1087.AWSDNS-07.ORG", "NS-1882.AWSDNS-43.CO.UK", "NS-423.AWSDNS-52.COM" ], "dnssec": false, "dns_summary": { "A": 2, "AAAA": 0, "MX": 5, "TXT": 36, "NS": 4, "CNAME": 0, "SOA": 1, "CAA": 4 }, "mx_hosts": [ "10 aspmx.l.google.com.", "20 alt1.aspmx.l.google.com.", "20 alt2.aspmx.l.google.com." ], "ssl": { "active_certs": 50, "total_seen": 100, "latest_issuer": "C=US, O=\"DigiCert, Inc.\", CN=DigiCert Assured ID G2 TLS RSA4096 SHA256 2022 CA1" }, "subdomains": { "count": 112, "sample": [ "api.stripe.com", "auth.stripe.com", "bfcm.stripe.com" ] } }, "tech": { "technologies": [ "Next.js", "Nginx" ], "cdn": [], "server": "nginx", "count": 2, "categories": { "email_provider": [ "Google Workspace" ] }, "generator": null }, "presence": { "search": { "top_results": [], "knowledge_panel": null, "engine": "google" }, "og": { "title": "Stripe | Financial Infrastructure to Grow Your Revenue", "description": "Stripe is a financial services platform that helps all types of businesses accept payments, build flexible billing models and manage money movement.", "image": "https://images.stripeassets.com/fzn2n1nzq965/XtX984S1GJVsVOXFC7kMu/01988281e867728dfb09aa7793a6e3b9/Stripe.jpg?q=80", "site_name": null, "favicon": "https://images.stripeassets.com/fzn2n1nzq965/1hgcBNd12BfT9VLgbId7By/01d91920114b124fb4cf6d448f9f06eb/favicon.svg" }, "social_links": { "github": "https://github.com/stripe" }, "redirect": { "redirected": false, "final_domain": "stripe.com", "hops": 0 }, "website_alive": true, "site_signals": null }, "reputation": { "trustpilot": { "found": true, "business_unit_id": "50489e6800006400051ae0d6", "domain": "stripe.com", "name": "Stripe", "trust_score": 1.6, "reviews_count": null } }, "news": { "query": "Stripe", "articles": [ { "title": "Advent, Stripe Are Said to Abandon $50 Billion Pursuit of PayPal - Yahoo Finance", "url": "https://news.google.com/rss/articles/CBMimgFBVV95cUxPUklWc3VTZDRtRk8wZGwxR1Vrcnc1eWFYV1J5N24zd2lSZHAtVlFvUm1NbXdnN0FkbHI3Wm12LVZMN0dPMF92Wll4Ul9YMjJ3M2JLd29LTUZlMHBnazR1UU9XVExhUEJobjVaVl9mWGhndzVidGhhd3ZyRzBiLUU1RXRaM3B3QmU2Qmk0YlBZVWtyU0stYkhHVGhR?oc=5", "source": "Yahoo Finance", "published": "2026-08-28T10:45:30+00:00" }, { "title": "Midday Need to Know: Treasury yields jump, Stripe abandons PayPal & more (SPY:NYSEARCA) - Seeking Alpha", "url": "https://news.google.com/rss/articles/CBMiqgFBVV95cUxNdlo2bmo5NGU2TUgwMldsNElheU1oZktPdFU3TW9pcU1XTHBLYzFWaEdvbUdRVEh2LVlrRkZGUnpsSEhhUXpSUGN5Q3ZlZEprazEyQzFkdHFKR0N5LUdIYlJBdlh2WkpjMm5rSDBJUUc2ZnZJM3dUdlo0SkJnMVc0dGdLUFNYNm5RQUtGZ1ZCdzlWQUwxWlpmaDhzWTg3dGFuSTNEWHJaby1EZw?oc=5", "source": "Seeking Alpha", "published": "2026-08-28T15:37:13+00:00" }, { "title": "PayPal (PYPL) Hit After Stripe, Advent Drop $53B Planned Takeover - Yahoo Finance", "url": "https://news.google.com/rss/articles/CBMimgFBVV95cUxNRVJZQk8xcHZEZ0J3Ym4yNk5faVlyNlQyaVVBNlA0d1JyUHlOX0ZNcG1pVWpOaTZRcTFsYTRPbzRlRHU1TFhiOW9Ld2Jhci1rWTl3Y01xb2ZLTWRKUjZhdFdPZEh5cEVrWWIxV3ZadE8zd1ZxcXhLWVllVWZ2SXByZklpMXQ0RjVsbDRBNzIxTFgwZEcxR1BBblZR?oc=5", "source": "Yahoo Finance", "published": "2026-08-29T03:43:00+00:00" } ], "count": 10 }, "developer": { "github_org": { "name": "Stripe", "description": "", "blog": "https://stripe.dev", "location": "San Francisco, CA", "public_repos": 98, "followers": 3492, "created_at": "2011-06-17T15:42:37Z" }, "top_repos": [], "packages": [], "match": "name" }, "hiring": { "ats": { "provider": "greenhouse", "company_token": "stripe", "matched": true }, "jobs_count": 573, "sample_jobs": [ { "title": "Account Executive, AI Sales", "location": "San Francisco, CA", "url": "https://stripe.com/jobs/search?gh_jid=7532733" }, { "title": "Account Executive, AI Startups (Hunter)", "location": "San Francisco", "url": "https://stripe.com/jobs/search?gh_jid=8130725" }, { "title": "Account Executive, Bridge", "location": "SF, NYC, SEA, CHI", "url": "https://stripe.com/jobs/search?gh_jid=8077887" } ], "departments": [ "1150 Solutions Architecture", "1175 Enterprise - Account Executives (NA)", "1185 Account Executives (EMEA)" ], "by_department": { "1185 Account Executives (EMEA)": 15, "1175 Enterprise - Account Executives (NA)": 10, "1652 Platforms - Account Executives (NA)": 8, "1651 Velocity - Account Executives (NA)": 6, "1195 Account Executives (APAC)": 6, "1642 Product Sales - MaaS": 5, "1653 Startups - Account Executives (NA)": 4, "1641 Product Sales - RFA ex Billing": 3, "6220 Executive Operations": 3, "8512 Terminal - Eng": 3, "Global Operations": 2, "1640 Product Sales - Payments": 2, "1644 Product Sales - Prime Billing": 2, "8589 Bridge - S&M": 1, "1645 Product Sales - Metronome": 1 }, "by_department_note": "counts from first 100 of 573 open roles" }, "company": { "name": { "value": "Stripe", "source": "trustpilot", "confidence": 0.99, "last_checked": "2026-08-29T13:35:26Z" }, "description": { "value": "Stripe is a financial services platform that helps all types of businesses accept payments, build flexible billing models and manage money movement.", "source": "url-resolver", "confidence": 0.8, "last_checked": "2026-08-29T13:35:26Z" }, "logo_hint": { "value": "https://images.stripeassets.com/fzn2n1nzq965/XtX984S1GJVsVOXFC7kMu/01988281e867728dfb09aa7793a6e3b9/Stripe.jpg?q=80", "source": "url-resolver", "confidence": 0.75, "last_checked": "2026-08-29T13:35:26Z" }, "site_title": { "value": "Stripe | Financial Infrastructure to Grow Your Revenue", "source": "url-resolver", "confidence": 0.85, "last_checked": "2026-08-29T13:35:26Z" }, "trust_score": { "value": 1.6, "source": "trustpilot", "confidence": 0.85, "last_checked": "2026-08-29T13:35:26Z" } } } }
How the Company Intelligence API works
Company Intelligence is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 184 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Qualifying an inbound signup from nothing but the email domain
A signup gives you a work email and little else. Before a human spends time on it you want to know whether there is a real company there, how big it is, and what it runs.
{"domain": "stripe.com"}One call returns the domain's age and registration, the stack it runs, its social and search presence, review standing, recent news, its public code footprint and how many roles it is hiring for, by department.
{"domain": "stripe.com", "exclude": ["news", "developer"]}Sections you do not need can be dropped, which is the lever on latency — the profile is assembled from several sources and you pay for the ones you ask for.
The hiring block is the one that usually decides the lead: an ATS with open roles and a department breakdown says more about size and momentum than a headcount field ever does.
curl -X POST https://api.reefapi.com/enrich-company/v1/company_domain \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"domain":"github.com","include":["domain","presence"]}'{
"ok": true,
"data": { … },
"meta": {
"api": "enrich-company",
"endpoint": "company_domain",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}The eleven field groups, and which action can run them
Everything this engine does is split into groups you switch on with include or exclude. Four exist only on the rich action, and asking for one of those from the basic action is rejected rather than quietly ignored. The measured column is what each group actually returned for stripe.com, which shows you which groups are deep and which are thin before you pay for them.
| Group | Action | Measured on stripe.com |
|---|---|---|
| domain | both | registrar, created 1995-09-12, age_days 11306, dnssec false, DNS record counts, 50 active certs, 114 subdomains |
| tech | both | technologies ['Next.js','Nginx'], server nginx, count 2, categories {} empty |
| presence | both | og title, description, image and favicon, website_alive true, redirect summary |
| news | both | 10 articles from a brand-name query, each with source and published date |
| developer | both | github_org login 'stripe', public_repos 98, followers 3484, top_repos [] empty |
| hiring | both | ATS provider greenhouse, company_token 'stripe', jobs_count 580, by_department breakdown |
| reputation | both | Trustpilot trust_score 1.6 across 17438 reviews, plus a Google Maps match |
| trends | rich only | status error with missing_reason 'unsupported' and an empty object |
| apps | rich only | found true, four Apple and two Play titles matched by name, every id null |
| funding | rich only | Wikidata Q7624104, founded 2010, recent_funding_news headlines, total_raised null |
| traffic | rich only | Tranco rank 240, tier top_1k, as_of 2026-07-20 |
include on the basic action accepts only the seven groups marked 'both'. Sending include ['trends'] to company_domain returns ok:false INVALID_PARAM with detail.allowed listing domain, tech, presence, news, developer, hiring and reputation. The entity and company blocks are always computed from whatever did run, and a non-hostname input such as 'definitely not a domain' is rejected with INVALID_PARAM before any lookup.
Where each part of the profile comes from, and what happens when a part is missing
Measured on well-known company domains. The provenance row is the one that makes the rest of the response safe to use.
The response opens with a provenance block naming each section, whether it matched, was skipped or failed, which source answered it and how long that took. A missing section is therefore distinguishable from an empty one — the difference between 'this company has no news' and 'we did not look' is on the record instead of being inferred from a null.
The entity block reports the domain it settled on, how it matched, a confidence number, the canonical company name and the evidence behind it. Enrichment that silently resolves to the wrong company is the failure mode that matters here, and it is surfaced rather than hidden.
Registration date, expiry, age in days, name servers, DNSSEC, mail hosts and certificate state come from the registry and DNS. For a fraud or credit-risk check this is the strongest single field in the profile, and it is exact.
Where a company runs a public applicant-tracking board, the profile returns the open-role count, sample roles and a breakdown by department. Marketing copy on a site is aspirational; a live jobs board with fifteen engineering roles is a fact about this quarter.
The profile is built by calling several sources and waiting for them, and a full run took several seconds rather than the sub-second a single lookup takes. It belongs in a queue or an onboarding step, not in the render path of a page. The include and exclude parameters are the honest lever: ask for less and it returns sooner.
A large company with a public code presence, an ATS and press coverage fills nearly every section. A small private one will come back with the registry and technology sections populated and much of the rest reported as unmatched. That is the shape of the underlying evidence rather than a gap we can close, and the provenance block is what tells you which case you are looking at before you build a score on it.
What people build with Company Intelligence
The jobs this data is most often used for.
endpoints
credits per call
Sales-intelligence tools call company_domain to resolve a lead's domain to a company.
CRM enrichment fills account records from a website.
Data pipelines use batch to enrich a whole prospect list.
What Company Intelligence data costs
The cheapest call here is 6 credits, so $15/mo (Pro) buys 1,666 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 184 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/enrich-company/v1/company_domain \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"domain":"github.com","include":["domain","presence"]}'import requests
r = requests.post(
"https://api.reefapi.com/enrich-company/v1/company_domain",
headers={"x-api-key": REEF_KEY},
json={
"domain": "github.com",
"include": [
"domain",
"presence"
]
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Company Intelligence.
Get a free key →Two blocks give me different employee counts and headquarters. Which one is right?▾
Both are reported and neither is adjudicated. On stripe.com the company block returned employees 17148 with source linkedin-jobs at confidence 0.7, while funding.registry returned employees 2500 from Wikidata. Headquarters split the same way: 'South San Francisco, California' from linkedin-jobs at 0.65 against 'San Francisco' from Wikidata. Every field under company is an object with value, source, confidence and last_checked precisely so you can apply your own preference order instead of trusting a merged number.
Is revenue_range a real financial figure?▾
No. It is a self-reported band lifted from an employer profile and it arrives at the lowest confidence in the response. The measured value for stripe.com was '$25M to $100M' with source indeed and confidence 0.6, which is plainly not Stripe's revenue. Use it as a rough sizing hint on small companies and ignore it on large ones.
Why does the news group return articles that are not about the company?▾
Because news is a brand-name keyword search, not an entity-resolved feed. A measured run on stripe.com returned 10 articles, several of which were about a college football player losing his black stripe, mixed in with genuine Stripe coverage. Filter on your side using the title and source fields, or exclude the group when the brand name is also a common word.
What does total_raised null mean?▾
Unknown, not zero. The funding group is built from a public registry plus funding press, and the response says as much in its own note: exact amounts and investor lists live in paid sources that are not wired in. For stripe.com the registry matched Wikidata Q7624104 with founded 2010, and recent_funding_news carried real valuation headlines, while total_raised and investors were both null.
Does the traffic group tell me how many visitors a site gets?▾
No, it is a popularity rank from the Tranco top-million list and the response repeats the distinction. The measured value for stripe.com was rank 240, tier top_1k, as_of 2026-07-20. A rank is ordinal: it says fewer than 240 domains are more popular, not how many visits the site received.
Why did entity.confidence change between two calls on the same domain?▾
Because entity resolution is assembled from whatever groups ran. With include ['domain','presence'] the entity block scored 0.8 on the site's own og name plus a stem guess. With the reputation group included, a trustpilot-domain-match arrived at weight 0.95 and confidence rose to 0.99, with the extra evidence listed in entity.evidence. If entity confidence matters to your pipeline, run more groups rather than fewer.
The reputation group returned a Google Maps place that is not the head office.▾
That match is made by website domain, so it lands on whichever listing carries the domain rather than the headquarters. On stripe.com it returned 'Stripe Toronto Office' with rating 3.2 from 4 reviews. Read reputation.maps as evidence that a physical listing exists, and use enrich-local when you need a specific named branch.
A group says status matched but the field I want is empty. Is that a contradiction?▾
No, provenance reports the group and not each source inside it. Several groups fan out to more than one source and are marked matched when any of them lands, which is why presence can carry a filled og block next to an empty search.top_results array, and why developer can report a matched github_org while top_repos stays []. Test the specific field you need instead of the status flag, and note that meta.completeness_pct counts groups that ran, not fields that filled.
What is the Company Intelligence API?▾
Company Intelligence API is a ReefAPI endpoint group for company intelligence It returns live JSON through POST requests under /enrich-company/v1.
Is the Company Intelligence API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Company Intelligence calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Company Intelligence login or account?▾
No login to Company Intelligence is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Company Intelligence data?▾
The page example is captured from a live company_domain call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Company Intelligence API use?▾
Company Intelligence actions currently cost 6-24 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Company Intelligence from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call enrich-company actions with the same key, credit pool and JSON envelope used by normal REST requests.
19 Utilities & AI APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Company Intelligence, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 183 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-08-30.