---
title: "Find emails for a list"
method: POST
path: "/api/v1/email-finder/jobs"
tags: ["Email finder"]
---

# Find emails for a list

`POST /api/v1/email-finder/jobs`

## Request

- Base URL: `https://app.argorant.com`
- URL: `https://app.argorant.com/api/v1/email-finder/jobs`
- Auth: HTTP bearer

A background job for up to 10,000 people. Send `rows` (first_name and last_name, or name, plus domain and an optional ref of your own) or `csv` text with a header row. Same prices per row as a single lookup; `maximum_charge` is the most the list can cost. Set `max_credits` to cap the spend: the job pauses at that limit. It also pauses when credits run out, at the daily limit (it goes on after midnight UTC) or when most lookups find nothing. Repeated rows and rows without a usable name or domain are skipped for free.

| Cost | What it does | Key scopes |
| --- | --- | --- |
| Same as a single lookup, per row; capped by max_credits | Spends credits | `argorant:unlock_contacts` |

## Headers

- `Idempotency-Key` string
- `X-Request-Id` string

## Request body

- object
  - `rows` object[]: People to look up. Send rows or csv.
    - `first_name` string
    - `last_name` string
    - `name` string
    - `domain` string
    - `ref` string: Your own id, returned with the result.
  - `csv` string: CSV text with a header row, instead of rows. Columns like first_name, last_name, name, domain, company_domain, website and id are recognised.
  - `name` string: A label for the list.
  - `max_credits` number: Spending limit for this list in credits.

## Response `200`

Queued

- object
  - `ok` boolean
  - `job` object
    - `job_id` string
    - `name` string
    - `status` string
    - `paused_reason` string, nullable
    - `total` integer
    - `processed` integer
    - `credits_charged` integer
    - `max_credits` integer
    - `maximum_charge` integer
    - `results_url` string

## Other responses

- `400`: 400 Bad request. `invalid_request` when neither rows nor csv, or both, or the file has no name or domain column.
- `401`: 401 Unauthorized. `unauthorized` when the API key is missing, wrong or revoked.
- `402`: 402 Payment required. `insufficient_credits` when no credit to start.
- `403`: 403 Forbidden. `scope_missing` when the key lacks argorant:unlock_contacts.
- `409`: 409 Conflict. `idempotency_conflict` when the Idempotency-Key was used with another body.
- `422`: 422 Validation error. `validation_error` when a field has the wrong type or is missing.
- `429`: 429 Too many requests. `rate_limited` when too many requests this minute.

---

[API](https://skmtc.dev/argorant/apis/argorant-api.md) · [All operations](https://skmtc.dev/argorant/apis/argorant-api/llms.txt) · [OpenAPI document](https://skmtc.dev/argorant/apis/argorant-api/revisions/4bc28c0085b6?raw)
