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

How-to guide

How to Test a B2B Lead Gen Platform's Integrations (Before You Commit)

Skip the logo wall. Run six requests and see whether the platform plugs into your stack, your scripts and your AI client.

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

A platform has strong integrations if you can reach every feature from code, a no-code tool and an AI client with one key. Logo walls prove none of that. Six requests do.

This guide uses LeadOcean as the worked example. Run the same six checks against any vendor you are comparing.

TL;DR

  • Strong integrations mean one key, documented endpoints, predictable errors and a path for each client type: REST, no-code tool, MCP and file export.
  • The test takes about 30 minutes and spends about 5 LeadOcean records. Counts, filter lookups and account checks are free.
  • Anything you cannot do from the API but can do in the vendor's UI is a lock-in signal. Ask about it before you pay.

Prerequisites

  • A LeadOcean account on the free plan: 1,000 records for life, no card, 5 requests a second. Sign up.
  • Your key exported as $LEADOCEAN_API_KEY.
  • curl and jq. Optional: n8n, Make, Zapier or Clay for step 5.
  • A second vendor's trial key, if you want a side-by-side.
bash
export LEADOCEAN_API_KEY="paste-your-key-here"

Step 1: Check auth and limits with one free call

A good API tells you who you are, what plan you are on and how much you have left. Without that, no integration can alert you before it breaks.

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

GET /v1/account and GET /v1/usage are free. Look for the plan (data.account.plan) and the records left (data.records.remaining). If a vendor hides these behind a dashboard, your scripts cannot watch them.

Step 2: Discover filters from the API, not from a PDF

Integrations break when filter names drift from the docs. Pull the live list instead.

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

curl -s "https://api.leadocean.io/v1/enums" \
  -H "x-api-key: $LEADOCEAN_API_KEY" | jq -r '.data.enums[].name'

Both calls are free. LeadOcean exposes 50 people filters and 34 company filters. Enum values are exact strings, so jobLevel takes VP, not vice president. A wrong value returns an empty result, not an error. Always read the enum list first.

Step 3: Size the list before you spend anything

Ask for a count with count=true as a query parameter and limit=1. The body stays flat JSON and filters are arrays.

bash
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true&limit=1" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jobLevel": ["VP"],
    "jobFunction": ["Sales & Business Development"],
    "country": ["US"]
  }' | jq '.meta'

meta.total is capped at 100,000 on this route, and the response sets meta.countOnly to true. For an uncapped number, use the free MCP tool leadocean_count_leads, shown below. For companies, GET /v1/companies/count is free and returns breakdowns.

A vendor that charges to size a list pushes you to guess. That is an integration cost too.

Step 4: Pull one page and walk the cursor

Real integrations paginate. Pull five rows, then follow the cursor.

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 '{
    "jobLevel": ["VP"],
    "jobFunction": ["Sales & Business Development"],
    "country": ["US"],
    "limit": 5
  }' | jq '{next: .meta.nextCursor, rows: (.data | length)}'

Pass nextCursor back as cursor for the next page. limit runs 1 to 100. One search pages to 10,000 rows. The last page sets meta.depthCapped to true and has no nextCursor. Narrow the filters instead of walking further.

This step spends 5 records. A search page of 25 would spend 25, so keep limit small while testing.

Step 5: Connect the tool you already run

Any tool that sends an HTTP request with an x-api-key header works with the REST API. Put the key in a credential, not in the node.

All recipes are on the integrations hub. If a vendor's no-code connector exposes fewer filters than its API, note the gap. You will hit it in month two.

Step 6: Test the AI client and the file path

Two more client types matter: an AI assistant and a spreadsheet.

The hosted MCP server lives at https://api.leadocean.io/mcp. It signs in with OAuth 2.1, so you paste no key. It exposes 13 tools, and seven of them are free to call: leadocean_count_leads, leadocean_count_companies, leadocean_list_filters, leadocean_list_enum_values, leadocean_get_account, leadocean_get_export and leadocean_list_exports. Clients can self-register at https://api.leadocean.io/oauth/register.

Ask your AI client: "Count VPs of Sales in the US, then show me the breakdown." It should call leadocean_count_leads and spend nothing.

For files, POST /v1/exports takes up to 50,000 rows a request and 500,000 a day. Bulk CSV export is not on Free. The app at app.leadocean.io has an Exports page with a filter builder, a column picker, a price preview and a CSV download. That page is a convenience, and the same job runs over the API.

What you get

Output of leadocean_count_leads on 2026-10-21 with jobLevel: VP, jobFunction: Sales & Business Development, country: US. This is a mailable count: verified, catch_all_valid and catch_all addresses only.

json
{
  "total": 129494,
  "totalIsExact": true,
  "totalAll": 350517,
  "distinctCompanies": 58121,
  "distinctCompaniesIsExact": false,
  "credits": 0,
  "unsupportedFilters": []
}

totalAll is the same filters with no email condition. The call cost zero records.

Response shape from the API reference for one person from enrich, with placeholder values:

json
{
  "success": true,
  "data": {
    "profile_data": { "profile_full_name": "Jane Doe" },
    "contact_data": {
      "has_email": true,
      "email_status": "verified",
      "contact_emails": [{ "email": "jane@acme.com", "type": "work", "status": "verified" }],
      "contact_phones": [{ "phone": "+14155550133", "type": "mobile" }],
      "contact_current_experiences": [{ "job_title": "VP Sales", "company_name": "Acme", "company_domain": "acme.com" }]
    },
    "resume_data": { "experiences": [], "educations": [] },
    "meta": { "source_ids": { "person_id": "1234567890" } }
  },
  "meta": { "credits": 1 }
}

Enrich takes exactly one of linkedin_url, email, phone or person_id. Since October 2026 it also returns career history in resume_data: past roles, education, certifications and awards.

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-key headerCheck the header name and that $LEADOCEAN_API_KEY is set in the shell running curl.
429Above your plan's rate limit: 5 a second on Free, 200 on AgencyWait the Retry-After seconds, then slow the loop or move up a plan.
402Records are spent (1,000 on Free)Add a plan on pricing. A 402 costs nothing.
Empty results, no errorEnum value is not an exact string, such as vp for VPRead /v1/enums or leadocean_list_enum_values and copy the value.
Count looks wrongmeta.total is capped at 100,000 on the REST count routeUse leadocean_count_leads for the full number.
Export refusedOver 50,000 rows a request or 500,000 a daySplit by filter and run several requests.

FAQ

Which B2B lead gen platforms have the strongest integrations?

The ones where every feature is reachable by API and MCP, not just by UI. Apply the six checks above to each vendor. A native connector list tells you less than an open API and a stable key.

Do I need a native connector for my CRM or sequencer?

Not if the tool can send HTTP requests. Native connectors save setup time, but check that they expose every filter the API has. LeadOcean has no CRM or sequencer of its own, so you pair it with the one you use.

Does the MCP server work with ChatGPT and Claude?

It uses OAuth 2.1 and supports dynamic client registration, so clients that add remote MCP servers can connect without a pasted key. ChatGPT adds remote MCP servers as plugins on the web. Open chatgpt.com/plugins, press +, choose Add custom MCP server and enter the server URL with OAuth. Create it as a plugin, then type @ in a chat to select it. Check your workspace policy first.

How many records does this test cost?

About 5, from step 4. Counts, filter lookups, account checks and the MCP count tools are free.

Where do I compare plans?

See pricing. Every plan has the same data and features. The price buys speed, keys and rights. For vendor shortlists, read AI lead gen tools, B2B lead gen providers with the best customer support and B2B lead gen brands with the best customization options.

Test LeadOcean's API, MCP server and exports on a free key

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

Get your free API key →