Pre-Black Friday: 20% off, for as long as you stayEARLYBFon Solo and AgencyEnds Nov 28Start free

How-to guide

How to Use Firmographic and Technographic Data Combined (LeadOcean API)

One query that says who the company is and what it runs, then a second that finds the people who buy. About 20 minutes and about 60 records.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

Firmographic data says who a company is. Technographic data says what it runs. Combine them in one filter set and you get a list that is the right size and has the right stack.

This guide builds that list in three calls: size it for free, pull the companies, then pull the people.

TL;DR

  • Put firmographic filters (country, headcount) and a technology filter in the same request. Count first, because counts are free.
  • Takes about 20 minutes and spends about 60 records on the free plan. The 1,000 free records cover it many times over.
  • Technology data comes from a crawl of about 7.8M company websites, so it covers a slice of the 67M companies, not all of them.

Prerequisites

  • A LeadOcean API key from app.leadocean.io. Free works: 1,000 records, no card.
  • The key in your shell as $LEADOCEAN_API_KEY.
  • curl and jq, or the LeadOcean MCP server at https://api.leadocean.io/mcp in a client that supports MCP.
bash
export LEADOCEAN_API_KEY="your-key-here"

Step 1: Pick the technology filter

Use technologyCategories when you care what a tool is for. Use technologies when you need one product by name.

A category such as Marketing automation matches every tool of that kind, so you do not list vendors one by one. The list has 105 categories, and the values are exact strings. Look them up before you guess.

bash
curl -s "https://api.leadocean.io/v1/enums" \
  -H "x-api-key: $LEADOCEAN_API_KEY" | jq 'keys'

In the MCP server the same lookup is the free leadocean_list_enum_values tool with name: "tech_category". Searching it for "auto" returns Marketing automation, which the crawl labels at 301,981 companies (crawl of 2026-09-07).

Step 2: Size the company list for free

Send the firmographic and technographic filters together to the company count endpoint. It costs no records and returns an exact total.

bash
curl -s "https://api.leadocean.io/v1/companies/count" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -G \
  --data-urlencode 'technologyCategories=Marketing automation' \
  --data-urlencode 'employeeRange=51-200,201-500' \
  --data-urlencode 'hqCountry=US'

List filters take comma-separated values on a GET. Check the names against GET /v1/filters if a call rejects one. If the total is under 100, loosen a filter. If it is over 10,000, tighten one, because a single search pages to 10,000 rows (meta.depthCapped).

The MCP tool leadocean_count_companies does the same thing and adds breakdowns by industry, headcount band, HQ country and HQ state.

Step 3: Pull a sample of companies

Now spend records on a small page to check the match. The search body is flat JSON, filters are arrays, and limit runs from 1 to 100.

bash
curl -s -X POST "https://api.leadocean.io/v1/companies/search" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "technologyCategories": ["Marketing automation"],
    "employeeRange": ["51-200", "201-500"],
    "hqCountry": ["US"],
    "limit": 25
  }' | jq '.meta, (.data | length)'

That page is 25 records. Read a few rows before you pull more. If the stack looks wrong for your offer, change the category now, not after 10,000 rows.

To page on, pass the nextCursor from meta as cursor in the next body.

Step 4: Find the buyers at those companies

Add person filters to the same company filters. The people search accepts them together, so you do not have to join two lists yourself.

bash
curl -s -X POST "https://api.leadocean.io/v1/people/search" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "technologyCategories": ["Marketing automation"],
    "employeeRange": ["51-200", "201-500"],
    "hqCountry": ["US"],
    "jobLevel": ["VP", "Director"],
    "jobFunction": ["Advertising & Marketing"],
    "limit": 25
  }'

Enum values are exact strings. VP and Director are job levels, and Advertising & Marketing is a job function. A wrong string gives an empty result, not an error.

Size this call free first. In the MCP server, leadocean_count_leads takes the same filters and counts only mailable people by default. It also returns distinctCompanies, so you can see how many employers the people span.

Step 5: Enrich the people you will contact

Search returns the profile. Enrich returns the contact data. Enrich takes exactly one of linkedin_url, email, phone or person_id.

bash
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}'

An enrichment that finds nobody is a 404 and costs nothing. Read email_status before you send, because bounced emails are not refunded.

For a list, skip the loop. POST /v1/exports takes up to 50,000 rows a request and 500,000 a day, and the app at app.leadocean.io has an Exports page with the same filters and a price preview. Bulk CSV export is not on Free.

What you get

These are real free-tool results from 2026-10-21, with no records spent.

Company count: technologyCategories: Marketing automation, employeeRange: 51-200 and 201-500, hqCountry: US.

json
{
  "total": 11746,
  "totalIsExact": true,
  "facets": {
    "employee_range": [
      {"value": "51-200", "count": 9110},
      {"value": "201-500", "count": 2636}
    ],
    "hq_state": [
      {"value": "California", "count": 1915},
      {"value": "New York", "count": 1044},
      {"value": "Texas", "count": 860}
    ]
  },
  "credits": 0
}

People count: the same company filters, plus jobLevel: VP, Director and jobFunction: Advertising & Marketing. The default counts people with a verified, catch_all_valid or catch_all email.

json
{
  "total": 5071,
  "totalAll": 15598,
  "distinctCompanies": 2335,
  "credits": 0
}

So 11,746 companies match, and 5,071 mailable VPs and Directors of marketing work at 2,335 of them. The 15,598 in totalAll is the same filters with no email condition.

The industry breakdown of the same count puts 771 of them in Software Development. Adding industry: Computer Software, an older label, drops the total to 9. Combined filters cut fast, so count before you pull.

A search page comes back in this shape (response shape from the API reference, placeholder values):

json
{
  "data": [
    {"company_data": {"company_name": "Acme", "company_domain": "acme.com"}}
  ],
  "meta": {"count": 25, "nextCursor": "<opaque cursor>"}
}

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-key headerCheck $LEADOCEAN_API_KEY is exported and sent as x-api-key.
429Requests above the plan's rate limit (5 a second on Free, 200 on Agency)Wait for the Retry-After header, then retry. Batch your calls.
402The 1,000 free records are spentUpgrade to Solo ($97 a month) or Agency ($497 a month). Counts stay free.
Empty data and a total of 0A filter value is not an exact string, or the filters are too tightLook the value up in GET /v1/enums, then loosen one filter.
meta.depthCapped is trueOne search paged to 10,000 rowsNarrow the filters and run a second search.
Export refusedOver 50,000 rows a request or 500,000 a daySplit the export by country or headcount band.

FAQ

What is the difference between firmographic and technographic data?

Firmographic data describes the company: industry, headcount, location, funding and revenue. Technographic data describes the software it runs, such as its marketing automation or CRM. You filter on the first to find the right company and on the second to find the right moment.

How much of the database has technology data?

About 7.8M companies were crawled for technology, against 67M companies in total. A technology filter searches that crawled slice only. The crawl behind these counts ran on 2026-09-07, and the whole dataset refreshes monthly.

Should I filter by category or by product name?

Start with a category. It catches every tool of that kind and survives a vendor switch. Use technologies when your offer only works with one named product.

Do technology filters work on people search?

Yes. Company filters, technology included, work on both company search and people search, so one request returns the right people at the right companies.

Does the count cost records?

No. GET /v1/companies/count, leadocean_count_companies and leadocean_count_leads are free, however many times you run them.

Next steps: see prompts for technographic data, compare technographic data providers and firmographic data providers, and check pricing. More guides are in the blog hub.

Build your first technographic list in minutes

Free to start. No credit card. 1,000 records to spend whenever you like.

Get your free API key →