Documentation

Company lookup

One domain in, the whole account out — industry, headcount, revenue, funding, headquarters and the technologies running on the company's website — as leadocean.company.v1.

The endpoint

POST /v1/companies/enrich · 1 record · scope enrich

One company per call, identified by website domain (preferred) or LinkedIn company page URL. A company we hold nothing for is a 404, and a 404 costs nothing.

FieldTypeMeaning
domainstringWebsite domain, e.g. stripe.com. One of domain or linkedin_url is required.
linkedin_urlstring (URL)LinkedIn company page URL.
You often already have the domain. Every experience object on an enriched person carries company_domain, so enriching a person and then looking up their employer is two calls with nothing to reconcile in between.

Paging a company’s people is now capped. GET /v1/companies/{domain}/people lists the people we hold at one company, a page at a time. From today it stops after 10,000 rows — meta.depthCapped: true and no further cursor — where before it would page without limit. If you walk that list deeper than 10,000, read how deep one search can page before your next run.

The company schema

leadocean.company.v1 has three top-level blocks plus meta. Unknown values are null, never guessed; arrays that hold nothing come back empty rather than missing.

company_dataIdentity and firmographics: company_id, company_name, company_domain (plus alias domains and alternative names), company_description, company_logo_url, company_type, company_industries[], company_specialties[], company_tags[], company_social_links, company_phones[], company_emails[], company_primary_address, company_number_of_offices.
…company_employeesnumber_of_employees plus a banded number_of_employees_code and min/max — so you can filter on a range even where the exact headcount is unknown.
…company_profiledate_founded, date_closed, entity_type, ownership_type, publicly_traded, small_business, fortune500_rank.
…revenuecompany_revenue_in_usd and a banded company_revenue_in_usd_code, with company_financials[] carrying yearly revenue and growth where we have them. Thinly held — present on a small share of records, so treat it as a bonus rather than something to filter on.
…company_fundingtotal_raised_usd, last_round_type, last_round_date, last_round_year and lead_investors[]. Held for a small fraction of companies; absent is the normal case, not an error.
…classificationnaics[] and sic[] codes, plus naics_sector — the two-digit NAICS sector, eighteen values, useful when a full code is too narrow to group on.
…countscompany_number_of_profiles is how many people we hold at the company; company_number_of_decision_makers is how many of those are flagged decision makers. company_number_of_offices and company_number_of_detected_technologies round out the set.
company_detected_technologiesOne entry per technology found on the company website: technology_product, technology_vendor, technology_category, tags, and first / last detected dates — so you can tell a live stack from a retired one.
company_metricscompletion_score and marketability_score — how complete the record is, and how reachable the company is.
metasources[], source_ids, fetched_at, schema.

LinkedIn follower count lives in company_data.company_linkedin_followers, not in company_metrics — the metrics block is about record quality. The exhaustive field list is in llms-full.txt.

Worked example

Look up one company by domain. Fields we hold nothing for are omitted from the sample for brevity — in a real response they are present and null.

curl -X POST "https://api.leadocean.io/v1/companies/enrich" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{"domain":"stripe.com"}'
200 OK · application/json
{
  "success": true,
  "data": {
    "company_data": {
      "company_name": "Stripe",
      "company_domain": "stripe.com",
      "company_description": "Financial infrastructure for the internet.",
      "company_type": "Privately Held",
      "company_industries": [{ "name2": "Financial Services", "priority": 1 }],
      "company_employees": {
        "number_of_employees": 8421,
        "number_of_employees_code": "5001-10000"
      },
      "company_linkedin_followers": 1204338,
      "company_revenue_in_usd": 4200000000,
      "company_profile": { "date_founded": "2010", "publicly_traded": false },
      "company_primary_address": {
        "city": "South San Francisco",
        "state": "California",
        "country": "United States",
        "country_code": "US"
      },
      "company_social_links": {
        "linkedin": { "url": "https://www.linkedin.com/company/stripe" }
      },
      "company_number_of_detected_technologies": 47
    },
    "company_detected_technologies": [
      {
        "technology_product": { "name": "Cloudflare" },
        "technology_category": { "name2": "Content Delivery Network" },
        "technology_last_detected_date": "2026-08-21"
      }
    ],
    "company_metrics": { "completion_score": 94, "marketability_score": 81 },
    "meta": { "sources": ["own"], "schema": "leadocean.company.v1" }
  },
  "meta": { "credits": 1, "source": "own" }
}

To find companies by criteria rather than by domain, see search — and the filters available to it are on the filter reference.