List outreach lead
Run job:outreach.lead.list through the looot API: 1 provider, from $0 per call. Inputs, prices, output shape and code for curl, JavaScript and Python.
List outreach lead.
Job id outreach.lead.list, in Connected apps (Email outreach). As of 2026-10-01, 1 provider serve it through 1 tool. Run job:outreach.lead.list and looot picks one of them; with fallback on, a miss moves on to the next. See Jobs.
Inputs
This job has one tool, so it takes that tool’s fields. Any key you send passes through unchanged.
| Name | Type | Required | Description |
|---|---|---|---|
campaign |
string | no | Campaign ID to filter leads. Example: “01a0abd0-8b15-7c60-831e-17bdca89a00f” |
contacts |
array | no | Array of emails the leads needs to have |
distinct_contacts |
boolean | no | Whether to return distinct contacts. Example: true |
enrichment_status |
number | no | Enrichment status to filter leads. Example: 1 |
esg_code |
string | no | ESG code to filter leads. Example: “1” |
excluded_ids |
array | no | Array of lead IDs to exclude |
filter |
string | no | Filter criteria for leads. For custom lead labels, use the interest_status field. Example: “FILTER_VAL_CONTACTED” |
ids |
array | no | Array of lead IDs to include |
in_campaign |
boolean | no | Whether the lead is in a campaign. Example: true |
in_list |
boolean | no | Whether the lead is in a list. Example: true |
is_website_visitor |
boolean | no | Whether the lead is a website visitor. Example: true |
limit |
integer | no | The number of items to return. Example: 10 |
list_id |
string | no | List ID to filter leads. |
organization_user_ids |
array | no | Array of organization user IDs to filter leads |
queries |
array | no | |
search |
string | no | Search term matched against the lead’s email and profile fields (first and last name, company, job title, and similar). Matches whole words, and the beginning of a field’s value, “smith” finds “John Smith”, “mith” does not. Provide campaign or list_id to also match inside values. Newly created or updated leads can take a few seconds to become searchable. Example: “John Doe” |
smart_view_id |
string | no | Smart view ID to filter leads. |
starting_after |
string | no | Forward pagination cursor. When distinct_contacts is false, provide the id value from the last lead of the previous page; when true, provide the lead’s email. Example: “01a0abd0-9ab5-7c0d-b00a-f00a1adddcc4” |
Providers and prices
| Provider | Tool | Price |
|---|---|---|
| Instantly | instantly-api-leads-list |
$0 per call |
A call that fails at the provider costs $0. See What’s free.
Output
The run’s result holds the provider’s answer. Signed in, looot inspect instantly-api-leads-list prints its fields.
Run it
Every call needs your API token in LOOOT_TOKEN; Sign in shows how to get one. Each run also needs a new idempotency key, so a retry never pays twice. With wait: 30 the answer comes back inline when the run ends within 30 seconds. Otherwise you get the running run back: poll GET /v1/runs/<runId>.
Example input with placeholder values:
curl -X POST "https://api.looot.ai/v1/runs" \
-H "Authorization: Bearer $LOOOT_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"endpointId":"job:outreach.lead.list","input":{"limit":10,"filter":"FILTER_VAL_CONTACTED","search":"John Doe","in_list":true,"list_id":"<list_id>","campaign":"01a0abd0-8b15-7c60-831e-17bdca89a00f","esg_code":"1","in_campaign":true,"smart_view_id":"<smart_view_id>","starting_after":"01a0abd0-9ab5-7c0d-b00a-f00a1adddcc4","distinct_contacts":true,"enrichment_status":1,"is_website_visitor":true},"wait":30}'const response = await fetch("https://api.looot.ai/v1/runs", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LOOOT_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({
endpointId: "job:outreach.lead.list",
input: {
limit: 10,
filter: "FILTER_VAL_CONTACTED",
search: "John Doe",
in_list: true,
list_id: "<list_id>",
campaign: "01a0abd0-8b15-7c60-831e-17bdca89a00f",
esg_code: "1",
in_campaign: true,
smart_view_id: "<smart_view_id>",
starting_after: "01a0abd0-9ab5-7c0d-b00a-f00a1adddcc4",
distinct_contacts: true,
enrichment_status: 1,
is_website_visitor: true,
},
wait: 30,
}),
});
const run = await response.json();
console.log(run.status, run.result);import os
import uuid
import requests
response = requests.post(
"https://api.looot.ai/v1/runs",
headers={
"Authorization": f"Bearer {os.environ['LOOOT_TOKEN']}",
"Idempotency-Key": str(uuid.uuid4()),
},
json={
"endpointId": "job:outreach.lead.list",
"input": {
"limit": 10,
"filter": "FILTER_VAL_CONTACTED",
"search": "John Doe",
"in_list": True,
"list_id": "<list_id>",
"campaign": "01a0abd0-8b15-7c60-831e-17bdca89a00f",
"esg_code": "1",
"in_campaign": True,
"smart_view_id": "<smart_view_id>",
"starting_after": "01a0abd0-9ab5-7c0d-b00a-f00a1adddcc4",
"distinct_contacts": True,
"enrichment_status": 1,
"is_website_visitor": True,
},
"wait": 30,
},
timeout=90,
)
run = response.json()
print(run["status"], run.get("result"))To pin one provider, send its tool id as endpointId instead of job:outreach.lead.list.