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. |
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. |
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.
Refer to the Authentication page to ensure your API key is properly included.
{"error": "unauthorized","message": "Missing or invalid API key."}
Need Help?
Our team is experienced with APIs and is here to help.
Chat with us.