Bulks
Create, launch, follow, and download bulk jobs. Every route takes the bulk type in its path
List bulk jobs
List the jobs of a type, limit per page, sorted by job ID. Jobs are shared by all members of a workspace. Archived jobs are listed only with archived=true, and deleted jobs never.
path Parameters
typeThe bulk type. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
query Parameters
pagePage number, starting at 1.
limitNumber of jobs per page. Values above 50 are treated as 50.
directionSort order by job ID. desc lists the newest jobs first.
archivedtrue lists only archived jobs. Without it, archived jobs aren't listed.
statusLists only the jobs with this status.
expiredtrue lists only the jobs past their expired_at, 180 days after creation; false lists only the others. Without it, both are listed.
qLists only the jobs whose name contains this text.
List bulk jobs › Responses
A page of jobs, newest first unless direction is asc.
Create a bulk job
Create a job from a list of values, data rows, or a CSV file (multipart). With data
or file, each column is found from the header row unless you set its zero-based
*_field_index. The options a type uses are listed in Bulk
types; unknown parameters are ignored.
The job is pending until you launch it. With launch set to true, it starts right
away; if it can't, it stays pending and data.message says why. A domain export
(export) takes one domain, always starts, and needs a paid plan.
Nothing is charged until the first download; see Billing. You can create 15 jobs of a type a day (30 domain exports), and none while 2 jobs of the type are running; see Limits.
path Parameters
typeThe bulk type, or export for a domain export. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
Create a bulk job › Request Body
nameJob name, 3 to 200 characters. Required, except for a domain export, which is named after its domain.
listOne value per line, or a JSON array of values. Tomba trims, lowercases, and de-duplicates the values, drops the invalid ones, and keeps the first ones up to the type's row limit. Not accepted by finder.
dataRows of cells, for input with several columns. The first row is a header unless has_header is false. In a multipart form, send it as a JSON-encoded string.
has_headerWhether the first row of data or of the file is a header. A list has no header.
delimiterColumn separator of the uploaded file: ,, ;, |, or tab. Any other value is read as ,.
domainThe domain to export. Required for export, and used by no other type.
domain_field_indexZero-based column of the domain or website. Used by search, similar, company, finder, and phone-finder.
company_name_field_indexZero-based column of the company name. Used by search, similar, company, and finder.
first_name_field_indexZero-based column of the first name. Used by finder.
last_name_field_indexZero-based column of the last name. Used by finder.
full_name_field_indexZero-based column of the full name. Used by finder.
email_field_indexZero-based column of the email address. Used by enrich, verifier, and phone-finder.
linkedin_url_field_indexZero-based column of the LinkedIn profile URL. Used by linkedin and phone-finder.
url_field_indexZero-based column of the article URL. Used by author.
phone_field_indexZero-based column of the phone number. Used by phone-validator.
country_field_indexZero-based column of the country code. Used by phone-validator.
technology_field_indexZero-based column of the technology slug. Used by technology.
input_typeUsed by search, similar, and company: whether the input is domains or company names. Defaults to company when the input has a company name column and no domain column, and to domain otherwise.
max_emails_per_domainUsed by search and similar. Addresses returned per domain.
email_typeUsed by search. With email_type_mode only, only addresses of this type are returned.
email_type_modeonly returns only the addresses of email_type; priority returns every type.
departmentsUsed by search. With departments_mode only, only addresses in these departments are returned.
departments_modeonly returns only the addresses in departments; priority returns every department.
verify_emailsUsed by search: verifies the addresses found. It is turned off, without an error, when max_emails_per_domain is above 10 or the input has more than 2,000 rows. similar, company, finder, enrich, linkedin, and author accept it, but it only adds verification credits there; see Billing.
find_phonesAdds phone numbers, at an extra cost. Used by search, company, finder, enrich, linkedin, verifier, and export.
include_sourcesAdds the web pages where each address was found. Used by search, finder, enrich, linkedin, author, verifier, and export.
boost_score_from_sourcesUsed by search. Adds 10 points, up to 90, to the score of an address that couldn't be verified but was found on at least 5 web pages.
skip_rows_with_emailUsed by finder. Skips the rows that already have a value in a column named email.
find_all_phonesUsed by phone-finder. Returns every phone number found instead of one.
filterUsed by export. The addresses to export, by type or by department.
notifyEmails you when the job finishes with at least one result.
launchLaunches the job right after creating it. If it can't start, it stays pending and data.message in the response says why. A domain export always starts.
webhook_urlAn https:// URL that receives an event when the job completes, fails, or is cancelled. At most 2,048 characters, without a username or password, on a host with a public IP address. See Bulk job events.
Create a bulk job › Responses
The job was created. With launch, data.message is present when the job couldn't start: it stays pending, and you can launch it later. The X-RateLimit-* headers count the jobs of this type created today.
Get a bulk job
Get a job by ID, with its options in config, its results in metrics, and, once it is billed, the first result rows in preview.
path Parameters
typeThe bulk type. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
idJob ID, as returned when you created the job.
Get a bulk job › Responses
The job, with the first rows of its results in preview once it is billed.
A bulk job. preview is returned only by GET /bulk/{type}/{id}.
Launch a bulk job
Start a pending job; any other status, or an expired job, returns 409. The launch is refused with 429 while 2 jobs of the type are running, or when a kind of credit the job needs is used up. Nothing is charged at launch; see Billing. Follow the job with GET /bulk/{type}/{id}/progress or a webhook.
path Parameters
typeThe bulk type. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
idJob ID, as returned when you created the job.
Launch a bulk job › Responses
The action succeeded. data.message says what was done.
Get bulk job progress
Get a job's status, progress, estimated time left, and results so far. The fields are at the top level of the response, not in data. Poll until status is completed, failed, or cancelled, or use a webhook instead.
path Parameters
typeThe bulk type, or export for a domain export. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
idJob ID, as returned when you created the job.
Get bulk job progress › Responses
The job's progress, at the top level of the response rather than in data.
statuspending until the job is launched. completed, failed, and cancelled are final.
progressPercentage of the rows processed.
processedRows processed so far.
error_messageWhy the job failed.
rows_per_minuteProcessing speed. null until enough rows are processed.
eta_secondsEstimated seconds until the job completes. null until enough rows are processed.
The job's results. They are updated while the job runs (partial is true) and final once it completes.
Download bulk job results
Download a result file of a completed job as CSV. file selects it: full (the
default), valid, or not_found. A job without a file of that kind returns 404, and a
job past its expired_at returns 409.
The first successful download charges the job's credits, shown in metrics.credits; later
downloads of any file are free. If your balance is lower than the cost at the first
download, the response is 429 and nothing is charged. See
Billing.
Each job can be downloaded 25 times a day, and a domain export 30 times.
path Parameters
typeThe bulk type, or export for a domain export. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
idJob ID, as returned when you created the job.
query Parameters
fileThe result file: full for every result, valid for the rows with a valid result, or not_found for the input rows that returned no result.
Download bulk job results › Responses
The CSV file, as an attachment named after the job: <name>.csv for full, <name>_valid.csv for valid, and <name>_invalid.csv for not_found.
Estimate bulk job credits
Get the credits a job costs, and whether your balance covers them. Before the job completes, basis is upper_bound: the cost if every row returned the maximum. Once it completes, basis is exact: what the first download charges.
path Parameters
typeThe bulk type. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
idJob ID, as returned when you created the job.
Estimate bulk job credits › Responses
The estimate.
The credits of a job. Before it completes, an upper bound, as if every row returned the maximum. Once it completes, exactly what the first download charges.
Get bulk job history
List a job's events, oldest first: creation, launch, start, end, retries, downloads, renames, archiving, and webhook deliveries.
path Parameters
typeThe bulk type. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
idJob ID, as returned when you created the job.
query Parameters
pagePage number, starting at 1.
limitEvents per page. Values above 100 are treated as 100.
Get bulk job history › Responses
A page of events.
Cancel a bulk job
Cancel a pending job: its status becomes cancelled, and you can retry it later. Only a pending job can be cancelled; any other status returns 409.
path Parameters
typeThe bulk type. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
idJob ID, as returned when you created the job.
Cancel a bulk job › Responses
The action succeeded. data.message says what was done.
Retry a bulk job
Run a failed or cancelled job again from its input, with the same options. Its results and metrics are reset, retry_count goes up by one, and the job is launched. It returns 409 when the job has another status, has expired, or its input is no longer stored, and 429 like PUT /bulk/{type}/{id}.
path Parameters
typeThe bulk type. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
idJob ID, as returned when you created the job.
Retry a bulk job › Responses
The action succeeded. data.message says what was done.
Rename a bulk job
Rename a job.
path Parameters
typeThe bulk type. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
idJob ID, as returned when you created the job.
Rename a bulk job › Request Body
nameNew name of the job, 3 to 200 characters.
Rename a bulk job › Responses
The action succeeded. data.message says what was done.
Archive a bulk job
Archive a completed, failed, or cancelled job: it leaves the default list and appears with archived=true. Restore it with PUT /bulk/{type}/{id}/restore. Other statuses, and an archived job, return 409.
path Parameters
typeThe bulk type. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
idJob ID, as returned when you created the job.
Archive a bulk job › Responses
The action succeeded. data.message says what was done.
Restore an archived bulk job
Move an archived job back to the default list. A job that isn't archived returns 409.
path Parameters
typeThe bulk type. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
idJob ID, as returned when you created the job.
Restore an archived bulk job › Responses
The action succeeded. data.message says what was done.
Delete a bulk job
Delete a job. It no longer appears in lists and its routes return 404.
path Parameters
typeThe bulk type. Each type's input, options, and row limit are in Bulk types and in GET /bulk/types.
idJob ID, as returned when you created the job.
Delete a bulk job › Responses
The action succeeded. data.message says what was done.
List bulk types
List every bulk type with its input fields and the header names detected for them, its options, row limit, daily limits, result files, and metrics distributions.
List bulk types › Responses
Every bulk type.
Get bulk statistics
Get the bulk activity of your account, or of your workspace: jobs created by status, rows processed, results, and credits billed, in total, per type, and per day. The period is the last 30 days unless you set from and to, and is at most one year.
query Parameters
typeCounts only the jobs of this type.
fromFirst day of the period, as YYYY-MM-DD.
toLast day of the period, included, as YYYY-MM-DD.
Get bulk statistics › Responses
The statistics.
Bulk activity of your account, or of your workspace, over a period. Credits count billed jobs only.
Get the bulk webhook secret
Get the key your bulk job events are signed with. It is created on first use, or when you first create a job with webhook_url. See Bulk job events.
Get the bulk webhook secret › Responses
The secret.
The key bulk job events are signed with. See Bulk job events.
Rotate the bulk webhook secret
Replace the key your bulk job events are signed with. The old key stops working at once, including for events of jobs that are already running.
Rotate the bulk webhook secret › Responses
The secret.
The key bulk job events are signed with. See Bulk job events.