A DTC brand is a small company that sells its own product straight to consumers. If you sell software, services or supplies to these brands, the buyer is a founder or a growth, ecommerce or operations lead, not a retail buyer.
This guide picks the roles, finds them with LeadOcean filters, sizes the list with a free count and drafts the first message for each buyer.
TL;DR
- DTC brands are small. Of 35,809 US consumer-brand companies with 11 to 500 people, 31,579 have 11 to 50 (count on 2026-10-21). The committee is a founder plus one or two leads in growth and operations.
- Size first with a free count. On 2026-10-21, five consumer-brand industries held 29,822 mailable C-level, VP and director contacts at 6,152 US companies with 11 to 500 people.
- The recipe takes about 45 minutes and spends about 30 records, so it fits inside the Free plan's 1,000.
Prerequisites
- A LeadOcean account on the Free plan. Sign up at app.leadocean.io, no card.
- An API key exported as
$LEADOCEAN_API_KEY. curlandjq, or any HTTP client.- Optional: the hosted MCP server at https://api.leadocean.io/mcp if you would rather run the counts from Claude.
Step 1: Pick the buying committee
DTC brands buy fast and with few people. Name the roles before you touch a filter.
| Brand stage | Economic buyer | Champion | Gatekeeper |
|---|---|---|---|
| 11 to 50 people | Founder, CEO | Head of Growth or Ecommerce | Founder (often the same person) |
| 51 to 200 people | COO, CMO | Director of Retention, Director of Ecommerce | Finance lead |
| 201 to 500 people | CMO, VP Operations | Director of Operations or Supply Chain | Finance, IT |
What you sell decides the champion. Marketing tools go to growth and brand. Fulfilment, packaging and returns products go to operations and supply chain. Payment and fraud tools go to ecommerce and finance.
LeadOcean has no single "DTC" industry. DTC is a business model, not a category, so you build it from industries and check the result. Look up the exact strings first, because enum values are exact.
for q in "Online and Mail Order" "Consumer Goods" "Cosmetics" "Retail Apparel" "Personal Care"; do
curl -s -G "https://api.leadocean.io/v1/enums/industry" \
--data-urlencode "q=$q" \
-H "x-api-key: $LEADOCEAN_API_KEY" | jq -r '.data.values[]'
doneThe same lookup is free through the MCP tool leadocean_list_enum_values. On 2026-10-21 a search for "Retail" returned 21 values, including Online and Mail Order Retail and Retail Apparel and Fashion.
Step 2: Turn the committee into filters
Write the filters as flat JSON. Every filter is an array, even when it holds one value.
{
"industry": [
"Online and Mail Order Retail",
"Consumer Goods",
"Cosmetics",
"Retail Apparel and Fashion",
"Personal Care Product Manufacturing"
],
"jobLevel": ["C-Team", "VP", "Director"],
"employeeRange": ["11-50", "51-200", "201-500"],
"country": ["US"]
}Know what this list contains. On 2026-10-21 a company count of those five industries at 11 to 500 people with a US headquarters returned 35,809 companies. Of those, 15,698 were filed under Retail Apparel and Fashion and only 186 under Online and Mail Order Retail. The largest NAICS group was 459999 (miscellaneous retail), so expect some physical shops and wholesalers next to the true DTC brands.
Two filters clean this up. Add technologyCategories with Ecommerce to keep brands whose site runs a store. On 2026-10-21 that cut the Step 2 count from 29,822 to 3,592 mailable people at 834 companies. Use Shopify apps instead when you sell into the Shopify stack: 194 people at 34 companies on the same date. Technology data covers the crawled sites only, about 7.8M companies, so a brand with no crawl is dropped.
Narrow by function when one product has one owner:
- Marketing and retention tools:
Advertising & Marketing. - Fulfilment, 3PL and returns:
OperationsandSupply Chain & Logistics. - Fraud, payments and finance tools:
Finance & Accounting.
Step 3: Size the list with a free count
Count before you pull. A count costs no records and you can run it as often as you like.
curl -s "https://api.leadocean.io/v1/people/search?count=true" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{
"industry": ["Online and Mail Order Retail","Consumer Goods","Cosmetics","Retail Apparel and Fashion","Personal Care Product Manufacturing"],
"jobLevel": ["C-Team","VP","Director"],
"employeeRange": ["11-50","51-200","201-500"],
"country": ["US"],
"limit": 1
}' | jq '.meta'count=true goes in the query string. The JSON body rejects unknown fields. The response has no rows, only meta.total (capped at 100,000) and meta.countOnly: true.
For the company side, GET /v1/companies/count takes the company-search filters and returns an exact total with breakdowns by industry, headcount band, HQ country and HQ state. In the 2026-10-21 run, California held 5,936 of the 35,809 companies and New York 3,127. Use the breakdown to pick a region before you pull anyone.
Step 4: Pull a 25-row test batch
Pull a small batch first. Read the titles. If half are the wrong role, tighten the filters before you spend more.
curl -s "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{
"industry": ["Online and Mail Order Retail","Consumer Goods","Cosmetics"],
"jobLevel": ["C-Team","VP","Director"],
"jobFunction": ["Advertising & Marketing"],
"employeeRange": ["11-50","51-200"],
"country": ["US"],
"limit": 25
}' > batch.json
jq '.data | length' batch.jsonA page of 25 is 25 records. Page with cursor from meta.nextCursor when you want more. One search pages to 10,000 rows, and the last page carries meta.depthCapped: true. Narrow the filters instead of walking further.
Each row carries contact_data.email_status. Send to verified and catch_all_valid. LeadOcean does not credit back bounces, so read the status before you send.
Step 5: Enrich the champions you will contact
Enrich only the people you will contact. Enrich takes exactly one of linkedin_url, email, phone or person_id.
curl -s -X POST "https://api.leadocean.io/v1/people/enrich" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{"person_id": "PERSON_ID_FROM_SEARCH", "reveal_email": true}'Enrich also returns career history in resume_data: past roles, education and certifications. A growth lead who came from a known marketplace or an agency gives you a better opener than a job title. An enrichment that finds nothing is a 404 and costs nothing.
For a phone number, call GET /v2/people/phone. A v2 contact call costs one record even when it finds nothing.
Step 6: Write messages that fit the buyer
DTC buyers watch customer acquisition cost, repeat rate and margin per order. Open with the number they check every Monday.
| Buyer | Their pressure | First line angle |
|---|---|---|
| Founder, 11 to 50 people | Cash, ad spend, time | One task you take off their plate this month |
| Head of Growth | Rising acquisition cost, flat repeat rate | A lift in retention or conversion, stated as a range you can back |
| Director of Operations | Shipping cost, returns, stock-outs | Cost per order or days saved |
| Finance lead | Chargebacks, payment fees | Fees or fraud rate, with a source |
Timing matters. Q4 is peak selling season for consumer brands, so pitch new tools before or after it. Keep the email under 80 words.
Plain example for a growth lead:
Subject: Repeat orders at Acme
Hi Jane,
Acme sells mostly to first-time buyers. We help stores your size
bring buyers back for a second order without more ad spend.
Open to a 15-minute call next week?Names, domain and subject are placeholders. Use your own product and a claim you can back up.
Step 7: Split the list into three campaigns
Do not send one message to the whole list. Split by what you sell and run each segment on its own copy.
- Founders at brands of 11 to 50 people.
jobLevelC-Team,seniorityfounder or owner. They read their own email, so keep it short and name one task. - Growth and retention leads at 51 to 200 people.
jobFunctionAdvertising & Marketing, level Director or VP. Lead with the metric. - Operations and supply chain leads at 51 to 500 people.
jobFunctionOperations and Supply Chain & Logistics. Lead with cost per order.
Run the count again for each segment. The totals will not add up to the combined list, because a person can match more than one filter set. Use the combined count for planning and the segment counts for sending.
On 2026-10-21 the marketing segment (C-Team, VP and Director, Advertising & Marketing, 11 to 500 people, US) counted 2,629 mailable people at 1,397 companies. The operations and supply chain segment counted 1,532 at 952 companies.
Step 8: Rank accounts before you send
A list of 29,822 people is too many to write by hand. Rank the accounts and send to the top group first.
- Count people per company in the test batch. An account with three matching titles is a committee you can reach from several sides.
- Prefer a work email marked
verified. It bounces less than a catch-all address. - Use
GET /v1/companies/{domain}/peoplefor your top accounts. It lists the other people at one domain, so you can add missing roles. - Drop accounts where the only match is a Staff or Other level title.
Then send in batches of 50 to 100 and read the replies. If replies cluster on one role, move effort toward it.
What you get
Output of leadocean_count_leads on 2026-10-21 for the Step 2 filters: five consumer-brand industries, jobLevel C-Team, VP and Director, headcount 11 to 500, country US. The count includes only people whose best email is verified, catch_all_valid or catch_all.
{
"total": 29822,
"totalIsExact": true,
"totalAll": 98246,
"distinctCompanies": 6152
}The gap between 29,822 and 98,246 is the people with no mailable email on file. Read it as the share you cannot email yet, not as lost data.
Response shape from the API reference (placeholder values). Search rows carry no contact points. Enrich with reveal_email for the address.
{
"success": true,
"data": [
{
"profile_data": {
"profile_full_name": "Jane Doe",
"profile_headline": "Head of Growth at Acme",
"profile_url": "https://www.linkedin.com/in/jane-doe"
},
"contact_data": {
"has_email": true,
"has_phone": false,
"email_status": "verified",
"email_type": "work"
},
"meta": { "source_ids": { "person_id": "1234567890" } }
}
],
"meta": { "count": 1, "credits": 1, "nextCursor": "CURSOR" }
}Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key header | Check $LEADOCEAN_API_KEY is exported and sent in the x-api-key header |
| 429 | More than the plan's rate limit (5 requests a second on Free, 200 on Agency) | Wait for the Retry-After seconds, then retry slower |
| 402 | The 1,000 Free records are spent | Move to a paid plan or reduce the pull; counts still work |
| Empty results | An enum value is not an exact string, such as "DTC" or "Ecommerce brand" | Resolve the value with list_enum_values first |
unsupported_filters on a count | A filter such as fundingType or hqCity is not supported in people counts | Drop it and count without it |
meta.depthCapped: true | One search stops at 10,000 rows | Split by state, headcount band or function |
FAQ
Is there a DTC industry filter?
No. LeadOcean has 534 industry values and DTC is a business model. Build the segment from Online and Mail Order Retail, Consumer Goods, Cosmetics, Retail Apparel and Fashion and Personal Care Product Manufacturing, then check the title mix on a 25-row batch.
Why does the list include some physical retailers?
The industry labels group by what a company sells, not how. The largest NAICS group in the company count was 459999, miscellaneous retail. Add the Ecommerce technology category to keep brands whose site runs a store.
How many records does this cost?
About 30: 25 for the test batch and a handful of enrichments. Counts, enum lookups and GET /v1/companies/count are free.
Can I download the whole list as a CSV?
Yes, on a paid plan. Bulk CSV export is not on Free. Solo is $97 a month and Agency is $497 a month, both with a fair-use pace instead of credits. See pricing.
Related
- Hub: all lead generation guides
- Lead generation for web3
- Lead generation for travel
- Lead generation for telecom
Count your DTC buyers free, then pull only the ones you will email
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →