Skip to content
LeadMCPDocs

Start an export

POST/exports

Starts one file job for a filter and reserves the quota without charging it. The job counts the filter itself. `POST /contacts/count` is free and tells you the price before you pay it. One export runs per account: a second call while one runs returns 409 export.running with the running id. A job delivers at most 50,000 rows. Near a cap the job is truncated to the contact credits left under the cap that runs out first, and a warning gives the reason and the reset time. On the free plan the cap is the lifetime pool: the reason is `monthly_cap`, `resets_at` is `9999-12-31T23:59:59.000Z`, and the hint says the pool does not reset. When the count passes its budget, the server checks for one matching row. A filter that matches nothing still answers 400 export.no_matches, because that check finds no row, and no job starts. A started job then has rows_available null and a count_unavailable warning.

Contact creditsOne contact credit per exported contact, charged on completion.

Starts one file job for a filter and reserves the quota without charging it. The job counts the filter itself. POST /contacts/count is free and tells you the price before you pay it. One export runs per account: a second call while one runs returns 409 export.running with the running id. A job delivers at most 50,000 rows. Near a cap the job is truncated to the contact credits left under the cap that runs out first, and a warning gives the reason and the reset time. On the free plan the cap is the lifetime pool: the reason is monthly_cap, resets_at is 9999-12-31T23:59:59.000Z, and the hint says the pool does not reset. When the count passes its budget, the server checks for one matching row. A filter that matches nothing still answers 400 export.no_matches, because that check finds no row, and no job starts. A started job then has rows_available null and a count_unavailable warning.

Request body

filterFilterrequired

The audience to write to the file.

Show child attributes

countriesarray of Countryoptional

Contact countries to include. Send ISO-2 codes such as us, or English names such as Germany.

exclude_countriesarray of Countryoptional

Contact countries to exclude. Send ISO-2 codes such as us, or English names such as Germany.

has_linkedinbooleanoptional

True keeps only contacts that carry a LinkedIn URL.

has_work_emailbooleanoptional

True keeps only contacts that carry a work email.

has_phonebooleanoptional

True matches contacts with a mobile or direct phone. False matches contacts without either.

include_secondary_rolesbooleanoptional

By default, filters match a person's main role. Set include_secondary_roles to true to also match their other current roles; the contact's top-level fields still show the main role. Default false.

title_querystring or array of stringoptional

Words in the current title. The match is case-insensitive and uses whole words: 'CTO' matches 'Co-founder & CTO' but not 'Director'. The words also match across punctuation: 'VP Sales' also matches 'VP, Sales' and 'VP-Sales'. Send an array to match any one of several phrases, for example ["VP Sales", "Vice President of Sales"]. A phrase that is blank after trimming answers 400 request.invalid. A leading or trailing wildcard answers 422 filter.rejected. For a substring match, use where with the contains operator on title.

functionsarray of JobFunctionoptional

Job functions to include.

operationsgeneral_managementsales_and_bizdevinformation_technologyeducationhealthcare_and_social_servicesfinance_and_accountingmanufacturing_and_productionengineeringcustomer_servicegovernment_and_public_safetymarketing_and_advertisinghuman_resourcesarts_and_creativeconstruction_and_tradeslegalsupply_chain_and_logisticsprocurementwriting_and_editorialresearch_and_scienceother

exclude_functionsarray of JobFunctionoptional

Job functions to exclude.

operationsgeneral_managementsales_and_bizdevinformation_technologyeducationhealthcare_and_social_servicesfinance_and_accountingmanufacturing_and_productionengineeringcustomer_servicegovernment_and_public_safetymarketing_and_advertisinghuman_resourcesarts_and_creativeconstruction_and_tradeslegalsupply_chain_and_logisticsprocurementwriting_and_editorialresearch_and_scienceother

seniorityarray of Seniorityoptional

Seniority rungs to include.

c_levelvpdirectormanagersenior_icentryfounder_or_partnerunknown

exclude_seniorityarray of Seniorityoptional

Seniority rungs to exclude.

c_levelvpdirectormanagersenior_icentryfounder_or_partnerunknown

domainsarray of stringoptional

Current employer domains. A full URL reduces to a bare domain on input.

exclude_domainsarray of stringoptional

Current employer domains to exclude.

company_namesarray of stringoptional

Current employer names. Case-insensitive exact match after normalization. Lowercase, trim and collapse whitespace. Strip one trailing legal suffix with an optional comma, then a leading "the ". Legal suffixes: inc, inc., incorporated, llc, l.l.c., ltd, ltd., limited, corp, corp., corporation, co, co., gmbh, ag, sa, s.a., bv, b.v., plc, pty ltd, srl. An empty normalized name returns 400 request.invalid. Values are OR within this key and AND across keys.

exclude_company_namesarray of stringoptional

The NOT of company_names after the same normalization. Lowercase, trim and collapse whitespace. Strip one trailing legal suffix with an optional comma, then a leading "the ". Legal suffixes: inc, inc., incorporated, llc, l.l.c., ltd, ltd., limited, corp, corp., corporation, co, co., gmbh, ag, sa, s.a., bv, b.v., plc, pty ltd, srl. An empty normalized name returns 400 request.invalid. Values are OR within this key and AND across keys.

company_sizearray of CompanySizeoptional

Company employee bands to include.

1-1011-5051-200201-500501-1K1K-5K5K-10K10K+

company_revenuearray of CompanyRevenueoptional

Company revenue ranges to include. Only companies with a known revenue range match; most small companies have none, so this key leaves them out.

0-1M1M-10M10M-50M50M-100M100M-1B1B+

industriesarray of Industryoptional

Company industries to include, as slugs such as software_development. A label such as 'Software Development' or 'IT Services & IT Consulting' is folded to its slug. Read the values from GET /contacts/schema/industries/values.

exclude_industriesarray of Industryoptional

Company industries to exclude, as slugs such as software_development. A label such as 'Software Development' or 'IT Services & IT Consulting' is folded to its slug. Read the values from GET /contacts/schema/industries/values.

schoolsarray of stringoptional

School names. It matches any school on the record. The match is exact on the stored value, so send the name as the record holds it.

skillsarray of stringoptional

Skill names. It matches any skill on the record. The match is exact on the stored value, which is lowercase, and the input is lowercased. Read the values from GET /contacts/schema/skills/values.

employee_count_minintegeroptional

The smallest company employee count, inclusive.

employee_count_maxintegeroptional

The largest company employee count, inclusive.

founded_year_minintegeroptional

The earliest company founding year, inclusive.

founded_year_maxintegeroptional

The latest company founding year, inclusive.

company_hq_countriesarray of Countryoptional

Company headquarters countries to include. Send ISO-2 codes such as us, or English names such as Germany.

last_round_afterYearMonthoptional

The latest financing event is after this month, exclusive.

last_round_beforeYearMonthoptional

The latest financing event is before this month, exclusive.

last_round_typesarray of FundingRoundTypeoptional

Types of the latest financing event to include.

pre_seedseedseries_aseries_bseries_c_plusprivate_equitydebtother

total_funding_minintegeroptional

The smallest total funding in US dollars, inclusive. Missing funding is null and never matches.

total_funding_maxintegeroptional

The largest total funding in US dollars, inclusive.

company_idsarray of CompanyIdoptional

Company ids (com_) of the current employer to include. Take them from POST /companies/search or POST /companies/lookup. Values are OR within this key and AND across keys. Takes up to 1,000 ids.

whereWhereNodeoptional

The condition tree. It is opened per account when the named keys cannot express the audience. The signals column is filtered here, with in or not_in.

Show child attributes

WhereGroupWhereGroupoptional

A boolean group of child nodes.

Show child attributes

andarray of WhereNodeoptional

Every child must match.

orarray of WhereNodeoptional

At least one child must match.

notWhereNodeoptional

The child must not match.

WhereLeafWhereLeafoptional

One bound condition on one column.

Show child attributes

fieldstringrequired

A contact column name, as GET /contacts/schema prints it, or signals. The name match is case-insensitive.

openumrequired

The comparison to apply. The operator list is frozen.

eqneqinnot_ingtgteltltecontainsexists

valueanyoptional

The bound value: a string, a number, a boolean, or a list of at most 50 values for in and not_in. Text columns take eq, neq, in, not_in, contains, exists, gt, gte, lt and lte with text values. role_since takes eq, neq, gt, gte, lt, lte, in, not_in and exists with YYYY-MM-DD dates. The number columns (company_employee_count, company_founded_year, company_total_funding_usd) take eq, neq, gt, gte, lt, lte, in, not_in and exists, where exists means the value is known. has_work_email and has_phone take eq and neq with true or false. The list columns (company_industries, signals, skills, languages) take in, not_in, contains, exists, eq (the list holds the value) and neq. experience, education, certifications and social take contains and exists only. exists takes no value or true; false means the column is empty. A leaf other than exists needs a value. A refused operator, value type or shape answers 422 filter.rejected and names what the column takes.

columnsarray of stringoptional

The columns to write, in this order. Send ["*"] for every column.

max_rows_per_companyintegeroptional

The most contacts to return from one company. On search the cap holds inside one page, so next_cursor is null when it is set; use start_export for the full capped list. On export the file can hold fewer rows than rows_to_export, and only exported rows are charged.

max_rowsintegeroptional

The ceiling for this job. One job writes at most 50,000 rows, so a bigger audience needs several jobs. Default 50000.

formatenumoptional

The file format. Both are gzipped. The list is frozen. Default csv.

csvjsonl

exclude_idsarray of PersonIdoptional

Person ids to leave out of count, search and export. Unknown ids have no effect. Takes up to 1,000 ids.

Failures

StatusMeaning
400The request shape, a filter key, a value, a cursor or the enrichment mode was rejected.
401The credential is missing, unknown or revoked.
402The daily or the monthly contact credit cap is spent, or the free plan's lifetime pool is.
409One export already runs on this account.
422The filter was rejected before it ran: more than 32 predicates, deeper than 4, more than 25 leaves, more than 1,000 domains or company names, more than 50 values in another list, a leading wildcard in a where leaf, a leading or trailing wildcard in title_query, an operator, value type or shape the column does not take, a leaf other than exists with no value, or an empty `and` or `or` group.
429The key passed 300 requests a minute or 2 concurrent requests.
503The data is unavailable for a short time.