Bulk Email Search: Create with File Upload
Use this API endpoint to create a Bulk Email Search by uploading a file (CSV or Excel). The system determines the type of email search to perform based on the fields you map.
Endpoint
https://api.anymailfinder.com
/v5.1/bulk/multipartPricing
This endpoint is free to use.
Credits are only charged when you download the results for the first time.
Duplicate searches within a month are not charged.
Authentication
Include your API key using the Authorization header.
Refer to the Authentication page for setup instructions.
Code example
curl -X POST "https://api.anymailfinder.com/v5.1/bulk/multipart" \-H "Authorization: YOUR_API_KEY" \-H "Content-Type: multipart/form-data" \-F "file=@your-leads-file.csv" \-F "domain_field_index=0" \-F "first_name_field_index=1" \-F "last_name_field_index=2" \-F "file_name=tech_ceos"
Request parameters
- Find Person Email - map any one of:
- person name (
full_name_field_index, orfirst_name_field_index+last_name_field_index) and company (domain_field_indexorcompany_name_field_index) linkedin_url_field_indexonly- both - LinkedIn URL together with name + company
- person name (
- Find Decision Maker Email - map
domain_field_indexorcompany_name_field_index, and specifydecision_maker_category. - Find Company Emails - map
domain_field_indexorcompany_name_field_index. - Verify Email - map
email_field_indexonly.
domain_field_index produces the most accurate results - use it whenever you have it. If you only have a company name, use company_name_field_index and we'll try to resolve a domain from it. When both are provided, domain_field_index is used first.
Send as "multipart/form-data" in the POST body:
| Parameter | Example value | Description |
|---|---|---|
filefile | "your-leads-file.csv" | A CSV or Excel file containing your data. The first row is expected to contain headers unless has_header is set to false. |
company_name_field_indexinteger - optional | null | The zero-based index of the column containing the company name. |
decision_maker_categorystring[] - optional |
| One or more categories of decision maker to search for. See the full list of available categories. If multiple are provided, they are tried in order: the search returns the first category that resolves to a valid email and does not attempt the rest. You can also define your own categories in your search settings and pass the value shown there in the API value column. |
domain_field_indexinteger - optional | 0 | The zero-based index of the column containing the domain. |
email_field_indexinteger - optional | null | The zero-based index of the column containing the emails to validate. |
file_namestring - optional | "tech_ceos" | A label to identify the bulk search. |
first_name_field_indexinteger - optional | 1 | The zero-based index of the column containing the first name. |
full_name_field_indexinteger - optional | null | The zero-based index of the column containing the full name. |
has_headerboolean - optional | true | Whether the first row of the file contains headers. Defaults to true. Set to false if the first row is data. |
last_name_field_indexinteger - optional | 2 | The zero-based index of the column containing the last name. |
linkedin_url_field_indexinteger - optional | null | The zero-based index of the column containing the LinkedIn URL. |
webhook_urlstring - optional | null | URL to receive a webhook notification when processing completes. |
Response
200OK
The search has been successfully created and will process asynchronously.
- If you specified a webhook URL, you will receive a notification when the search is completed.
- Otherwise, use the Bulk Search Detail API endpoint to check the search status.
{"counts": {"failed": 0,"found_unknown": 0,"found_valid": 0,"not_found": 0,"total": 0},"created_at": "2025-01-08T13:25:36.457Z","credits_needed": 0,"decision_maker_category": "finance,ceo","file_name": "string","id": "string","paid": true,"started_running_at": "2025-01-08T13:25:36.457Z","status": "queued"}
| Property | Type | Description |
|---|---|---|
status | string | The current status of the bulk search. Possible values:
|
counts.failed | integer | Number of rows where the search failed. |
counts.found_unknown | integer | Number of rows with risky emails found. Only applies to Verify Email bulks: searches stopped returning risky emails on 5 October 2026. |
counts.found_valid | integer | Number of rows with valid emails found. |
counts.not_found | integer | Number of rows where no email was found. |
counts.total | integer | Total number of rows in the search. |
created_at | string | The datetime when the search was created. |
credits_needed | integer | The maximum credits required to download the results. Duplicate searches within a month are not charged. |
decision_maker_category | string | null | The decision maker categories specified during search creation. This is a comma-separated list. |
file_name | string | The label provided to identify this search. |
id | string | Unique identifier for this bulk search. |
paid | boolean | Indicates whether this search was paid for. |
started_running_at | string | null | The datetime when the search started processing. |
400Bad Request
The request is missing required data or is improperly formatted.
Review the message field to identify and correct the issue.
{"error": "bad_request","message": "..."}
401Unauthorized
The request did not include a valid API key. If no key was sent at all, the message tells you to add the Authorization header instead.
Refer to the Authentication page to ensure your API key is properly included.
{"error": "unauthorized","message": "Invalid API key. Copy it again from https://app.anymailfinder.com/settings/api (if you regenerated it, use the new one)."}
Need Help?
Our team is experienced with APIs and is here to help.
Chat with us.