IT services firms and MSPs are small, owner-led and easy to over-count. Filter by industry, headcount and seniority, count the list for free, then pull only the people you will email.
TL;DR
- Small IT firms buy through the owner or founder. Larger ones add a sales lead and a technical lead. Target all three at the same company.
- Size the list with a free count, then pull a 100-row sample. The recipe takes about 25 minutes and spends 100 records at most.
- On 2026-10-21 the free count found 37,456 mailable owners, founders and C-level people at US IT services firms with 11 to 200 employees, across 15,817 employers.
Prerequisites
- A LeadOcean account. The Free plan gives 1,000 records for life, no card, 5 requests a second. Sign up at app.leadocean.io.
- An API key stored as
$LEADOCEAN_API_KEY. curlandjq, or any HTTP client. Optional: the hosted MCP server athttps://api.leadocean.io/mcpif you work from Claude.
Base URL is https://api.leadocean.io. Every request carries the header x-api-key.
Step 1: Pick the buying committee
IT services is a crowded, relationship-led market. Who signs depends on firm size, so write the committee down before you query anything. This guide is for vendors selling software, tooling, services or data to IT firms and MSPs.
- Owner, founder or CEO. In a firm under 50 people this person signs nearly everything, including your tool.
- Sales or business development lead. A director or VP who owns the pipeline. Buys lead data, outreach tools and marketing services.
- Technical lead. A CTO, head of service delivery or head of operations. Runs the pilot for anything that touches the stack, the ticket queue or client onboarding.
- Finance or operations lead. Appears in larger firms. Rarely the champion, often the blocker on price.
Turn the roles into filter sets:
owner: { seniority: [owner, founder, c_suite] }
sales: { jobLevel: [Director, VP], jobFunction: [Sales & Business Development] }
technical: { seniority: [c_suite, vp, head, director], title: ["CTO", "Service Delivery", "Operations"] }The title filter takes keywords. Use it for the technical lead, because job function for these roles is often filed as Information Technology or Operations inconsistently.
Step 2: Resolve the industry values
Filter values are exact strings. The industry list has 534 values and several describe IT services. Look them up instead of guessing.
for q in "IT Services" "Information Technology" "IT System"; 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[]'
doneIn Claude with the MCP server connected, the free tool does the same job.
leadocean_list_enum_values({ name: "industry", q: "IT Services" })The values that matter follow.
IT Services and IT ConsultingInformation Technology and ServicesIT System Operations and MaintenanceIT System Design ServicesIT System Training and SupportIT System Custom Software Development
The first two carry almost all of the companies: on 2026-10-21 the free company count found 44,982 and 15,979 US firms with 11 to 200 staff, against 47 for IT System Operations and Maintenance. Keep that third value, but expect it to add little. Add IT System Custom Software Development only if you sell to dev shops.
Step 3: Size the company list for free
Count companies first. A company count is free and tells you whether the segment can carry an outbound motion.
curl -s -G "https://api.leadocean.io/v1/companies/count" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
--data-urlencode "industry=IT Services and IT Consulting" \
--data-urlencode "industry=Information Technology and Services" \
--data-urlencode "industry=IT System Operations and Maintenance" \
--data-urlencode "hqCountry=US" \
--data-urlencode "employeeRange=11-50" \
--data-urlencode "employeeRange=51-200"The same call as an MCP tool is leadocean_count_companies. It spends no records and returns breakdowns by industry, headcount band, HQ state and NAICS code, so you see where the segment clusters.
Step 4: Build the people filter
Search takes a flat JSON body. Filters are arrays. The count=true query parameter makes the call a free sizing call: data comes back empty and meta.total is capped at 100,000.
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"industry": ["IT Services and IT Consulting",
"Information Technology and Services",
"IT System Operations and Maintenance"],
"country": ["US"],
"employeeRange": ["11-50", "51-200"],
"seniority": ["owner", "founder", "c_suite"],
"limit": 1
}'Build one filter per committee role.
| Role | Filter |
|---|---|
| Owner or founder | seniority: ["owner", "founder", "c_suite"] |
| Sales lead | jobLevel: ["Director", "VP"], jobFunction: ["Sales & Business Development"] |
| Technical lead | seniority: ["c_suite", "vp", "head", "director"], title: ["CTO", "Service Delivery"] |
Enum values are case-exact: VP, Director. Seniority is lowercase. A people count with no email filter carries meta.distinctCompanies, which tells you how many employers the people span.
Step 5: Pull a sample and check email status
Spend a small number of records to check quality before a bulk pull. Page size is 1 to 100 and pagination uses cursor.
curl -s -X POST "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"industry": ["IT Services and IT Consulting", "Information Technology and Services"],
"country": ["US"],
"employeeRange": ["11-50", "51-200"],
"seniority": ["owner", "founder", "c_suite"],
"emailStatus": ["verified", "catch_all_valid"],
"limit": 100
}' | jq '.meta, (.data | length)'Read email_status on every row before you send. LeadOcean does not refund or credit back bounced emails. One search pages to 10,000 rows (meta.depthCapped is true on the last page), so narrow the filters rather than walk the whole index.
Step 6: Write the messaging
Pick one angle per role. Keep each first email under 90 words and make one ask.
- Owner. Lead with time. Owners of small firms bill hours or run on thin margins, so name the hour you save them.
- Sales lead. Lead with pipeline. Ask who owns outbound and whether the list is the bottleneck.
- Technical lead. Lead with the stack and the ticket queue. Say exactly what changes in their tooling, and what does not.
Use the firm's own segment in the first line, such as managed services or custom software, because the industry value tells you which. For a bulk run, POST /v1/exports takes up to 50,000 rows a request and 500,000 a day. Bulk CSV export is not on Free; Solo at $97 a month includes it. The app at app.leadocean.io also has an Exports page with a filter builder and a price preview.
A first email for the owner segment, with placeholders:
Subject: Quick question about Acme IT's pipeline
Hi Jane,
Acme IT looks like a managed services shop with a small sales team.
How do you find new clients today: referrals, partners or outbound?
We help firms like yours build a verified list of local businesses
that match your service area. Worth a 15-minute look?
Jane DoeThree rules keep it working. Name the segment in line one. Ask a question the owner can answer in one line. Never attach anything to the first touch.
Send in small batches of 50 to 100 people and watch bounces before you scale. A catch-all domain can accept mail and still bounce later, so keep catch_all rows in a separate batch from verified ones.
Step 7: Segment by firm type and size
An MSP, a project-based IT consultancy and a dev shop do not share a pitch. Split the list before you write a sequence.
- Managed services. Use the two main IT values plus
title: ["Service Delivery", "Managed Services"]. These buyers care about ticket volume, onboarding speed and margin per seat. - Consultancies. Use
IT Services and IT Consultingwithseniority: ["partner", "founder", "owner"]. These buyers care about utilization and a steady flow of projects. - Smaller shops. Use
employeeRange: ["1-10", "11-50"]. The owner answers every email, so send fewer touches and make the first one short. - Larger firms. Use
employeeRange: ["201-500", "501-1000"]and add the technical lead and a finance contact. Expect a longer cycle.
Run one free count per segment and compare the totals. Spend your first 100 records on the segment with the highest ratio of mailable people to employers, because that is where one email reaches a real decision maker.
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"industry": ["IT System Operations and Maintenance"],
"country": ["US"],
"seniority": ["owner", "founder", "c_suite"],
"limit": 1
}'Step 8: Enrich the accounts that reply
When a reply comes in, enrich the person before the call. POST /v1/people/enrich takes exactly one of linkedin_url, email, phone or person_id. Since October 2026 it also returns career history: past roles, education and certifications. Past employers carry no company id yet.
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": "1234567890" }' | jq '.data.resume_data.certifications'Certifications are useful in this market. A technical lead who holds a vendor certification tells you which platforms the firm already resells, so you can open with the integration that matters. An enrichment that finds nobody is a 404 and costs nothing.
What you get
Free count run on 2026-10-21 with leadocean_count_leads. These are mailable counts (verified, catch_all_valid or catch_all), not everyone matching the filters.
| Segment | Filters | Mailable people | Employers |
|---|---|---|---|
| Owners and C-level | industry: the three IT values, country US, employeeRange 11-50 and 51-200, seniority owner, founder, c_suite | 37,456 | 15,817 |
| Sales directors and VPs | same industry, country and size, jobLevel Director and VP, jobFunction Sales & Business Development | 6,490 | 3,560 |
Without the email condition the first filter matches 138,870 people and the second 21,097. The company count for the same industries, US headquarters and 11 to 200 employees returned 61,008 companies on 2026-10-21.
A search row looks like this. Response shape from the API reference, placeholder values. Rows carry no addresses: send meta.source_ids.person_id to enrich for those.
{
"success": true,
"data": [
{
"profile_data": { "profile_full_name": "Jane Doe", "profile_headline": "Founder at Acme IT" },
"contact_data": {
"has_email": true,
"email_status": "verified",
"email_type": "work",
"contact_current_experiences": [
{ "company_name": "Acme IT", "company_domain": "acme.com", "job_title": "Founder" }
]
},
"meta": { "source_ids": { "person_id": "1234567890" } }
}
],
"meta": { "count": 1, "nextCursor": "..." }
}Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key header | Check $LEADOCEAN_API_KEY is exported and sent as x-api-key |
| 429 | More requests a second than the plan allows (5 on Free, 200 on Agency) | Wait for Retry-After, then slow the loop or move up a plan |
| 402 | The 1,000 free records are spent | Upgrade at app.leadocean.io, or keep sizing with free counts |
| Empty results | A bad enum value, such as Director typed as director | Resolve values with leadocean_list_enum_values and copy them exactly |
| Total stops at 100,000 | meta.total is capped at 100,000 | Add filters until the total drops below the cap |
| Export refused | Over 50,000 rows a request or 500,000 a day | Split the export by state or headcount band |
FAQ
Who buys from an MSP vendor?
In firms under 50 people, the owner or founder. In larger firms, a sales director and a technical lead join the decision. Target all of them at the same company.
Are IT services firms hard to find by industry?
The industry label is split across several values. IT Services and IT Consulting and Information Technology and Services hold nearly all of them, so use both.
How much does the list cost to size?
Nothing. Counts, filter lookups and company counts spend no records. Only returned search rows, enrichments and exports cost one record each.
Can I do this on the Free plan?
Yes, for a sample. Free gives 1,000 records for life with every feature except bulk CSV export. Solo at $97 a month adds export, and Agency at $497 a month suits teams. See pricing.
More guides
Browse the lead generation guides for other industries. Related: legal services, web3 and travel.
Count your IT services and MSP segment before you spend a record
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →