What it does
A bulk export is a people search that writes rows to a file instead of a page. It takes the same filters as search, so anything you can find you can export.
The file is a plain .csv, never zipped. It is built by a background worker, so a request is admitted or refused on the spot and you poll for the result. An email goes out when the file is ready.
Count first, then export. count_leads is free, and a search with count=true and limit 1 is free too. You see the size of the list before a single record is spent.
Each row written is 1 record, whatever columns it carries. Records are reserved when the export is admitted, and the ones for rows never written are released.
What you get
You choose a preset or an ordered list of column ids. GET /v1/exports/columns is free and public, and lists all of them.
| Capability | Detail |
|---|---|
| Filters | Every people search filter except cursor, limit, count and facets |
| Rows | Up to 50,000 per export, deduplicated by person_id |
full preset | 45 columns: identity, profile, address, contact flags, emails 1 to 3, phones 1 to 2, current role, education, skills. Needs the enrich scope |
search preset | 27 columns from the search row: identity, headline, location, current employer and title, contact flags. No contact points |
Custom columns | Ordered ids from the catalogue, such as current_job_title and email_1_address |
caps | Sizes of numbered blocks, 1 to 10: emails 3, phones 2, past roles 3, educations 2, certifications 2, awards 1 |
| Email fields | Address, type, status, verified date per email. Status values include verified, catch_all_valid, catch_all and risky |
| Delivery | Poll GET /v1/exports/{id}, then GET /v1/exports/{id}/download (text/csv) or use the emailed link |
Numbered columns come back as email_1_address, email_1_status and phone_1_number. A value we do not hold is empty.
How you use it
In the app
The Exports page at app.leadocean.io has a filter builder, a column picker with presets, the record price before you start, and a Download button. Build the filter, pick a preset, check the price, download.
The app is a data export. It has no sequencer, dialer, CRM or Chrome extension.
With the API
curl -X POST "https://api.leadocean.io/v1/exports" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "acme-vp-sales-ca",
"filters": {
"jobLevel": ["VP"],
"jobFunction": ["Sales & Business Development"],
"country": ["CA"],
"emailStatus": ["verified"]
},
"limit": 5000,
"preset": "full"
}'The answer is a 202 with the job: id, status, estimatedTotal, remaining and pollAfter (10 seconds). When status is done, download the file with your key or the signed downloadUrl. DELETE /v1/exports/{id} cancels a job and keeps the rows already written.
From an AI agent
The hosted MCP server at https://api.leadocean.io/mcp signs in with OAuth 2.1, so no key is pasted. Export uses three of its 12 tools: leadocean_export_leads, leadocean_get_export and leadocean_list_exports. Try:
Count VPs of sales in Canada with a verified email. If under 10,000, export them with the search preset and give me the download link when it is ready.
The agent counts first with leadocean_count_leads, which is free, then starts the export. leadocean_get_export and leadocean_list_exports are free.
Pricing
Free is 1,000 records, one-off, no card. Pro is $499 a month, flat. Both get the same API, app and MCP server.
Pro has no per-record price and no credits. Exports, searches and lookups are unlimited inside fair use. Past the fair-use line a very large month is paced down to one request a minute until the reset, not cut off. See pricing.
Limits
- Per export. 50,000 rows.
- Per account. 500,000 rows a day and 10,000,000 rows per period. These can be raised: write to support@leadocean.io.
- One at a time. One export runs per account at a time. The rest queue.
- File life. The file is kept 7 days. The key-free emailed link works for 24 hours.
- Rate limit. 100 requests per second per key, on every plan.
- Count cap.
meta.totalon the REST API stops at 100,000. Use the MCP count for a bigger list. - Refusals.
export_limit_rows,export_filter_unsupported(a filter the index cannot apply, so an export is never half-filtered),export_limit_daily,export_limit_monthly, and 402 when you lack the records. - Gaps. Certification columns exist but stay empty. About half of profile summaries end in an ellipsis. There is no refund for bounced emails, so filter on
emailStatus.
FAQ
How many rows can I export at once?
50,000 per export. For a bigger list, split the filters so they do not overlap, for example one export per country or employeeRange. The walk-through is in pull 1M records with a bulk CSV export.
What is a bulk export?
It is a filter run that ends in a file, not a page of results. What is a bulk export explains how it differs from search and enrichment.
Does counting the list cost anything?
No. count_leads, list_filters, list_enum_values and a count=true search with limit 1 are free. Count before every export.
Can I export without a developer?
Yes. The Exports page in the app has the filter builder, the column picker and the price. For a worked example with live counts, see bulk B2B contact export.
Do I need the enrich scope?
Only for columns that reveal emails or phones, such as the full preset. The search preset needs the search scope only. Free keys get both scopes inside the 1,000 records.
Size your bulk export free, then pull the CSV
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →